前面是Car类和CarStatus类,后面是测试类TestCar,问题:最后面ff的两次赋值,只能赋一次,第二次编译时就会出现错误: 无法访问的语句 ff = trafficAdmin.isLegalSpeed(trafficAdmin.getCarStatus(normalCar)); 不知为什么?大神帮帮忙!!!public class Car {
String name = "haha";
String color;
String direction;
int speed;
boolean isTrafficAdmin;
public Car() {
this(50,"beijing");
}
public Car(int p_speed,String p_direction) {
this(p_speed,p_direction,false);
}
public Car(int p_speed,String p_direction,boolean isTrafficAdmin) {
this.speed = p_speed;
this.direction = p_direction;
this.isTrafficAdmin = isTrafficAdmin;
}
public void dirveCar() {
speed = 50;
direction = "beijing";
}
public void raiseSpeed (int p_speed) {
if(p_speed < 0) {
System.out.println("加速度不能为负数");
return;
}else {
int currentspeed = speed + p_speed;
speed = currentspeed;
}
}
public void raiseSpeed (byte p_speed) {
if(p_speed < 0) {
System.out.println("加速度不能为负数");
return;
}else {
int currentspeed = speed + p_speed;
speed = currentspeed;
}
}
public void overTakeCar( Car another) {
speed = another.speed + 5;
direction = another.direction;
}
public void setSpeedAndDirection(int p_speed,String direction) {
speed = p_speed;
this.direction = direction;
}
public boolean isOverSpeed() {
if (speed > 60) {
return true;
}else
return false;
}
public void setAnotherCarName(Car another,String newName) {
if(!isTrafficAdmin) {
System.out.println("你没有权限");
return;
}else {
another.name = newName;
}
}
public void setSpeed(Car another) {
if(!isTrafficAdmin) {
System.out.println("你没有权限");
return;
}else {
another.speed = 0;
}
}
public CarStatus getCarStatus(Car another) {
CarStatus status = new CarStatus(another.speed,another.direction);
return status;
}
public boolean isLegalSpeed(CarStatus status) {
if(status.speed<=60) {
return true;
}else {
return false;
}
}
public void printCar() {
System.out.println(speed);
System.out.println(direction);
}
}
public class CarStatus {
int speed;
String direction;
public CarStatus() {
}
public CarStatus(int p_speed,String direction) {
this.speed = p_speed;
this.direction = direction;
}
}
public class TestCar {
public static void main(String[] args) {
Car normalCar = new Car();
normalCar.printCar();
Car crazyCar = new Car();
crazyCar.printCar();
Car trafficAdmin = new Car(40,"beijing",true);
trafficAdmin.printCar();
crazyCar.raiseSpeed(10);
crazyCar.printCar();
crazyCar.raiseSpeed((byte)10);
crazyCar.printCar();
normalCar.overTakeCar(crazyCar);
normalCar.printCar();
normalCar.setSpeedAndDirection(50,"beijing");
normalCar.printCar();
/*boolean ff = trafficAdmin.isLegalSpeed(trafficAdmin.getCarStatus(normalCar));
if(ff) {
trafficAdmin.setAnotherCarName(normalCar,"good");
System.out.println(normalCar.name);
return;
}else {
return;
}*/
//normalCar.printCar(); 这句怎么无法访问呢?
boolean ff = trafficAdmin.isLegalSpeed(trafficAdmin.getCarStatus(crazyCar));
if(ff) {
trafficAdmin.setAnotherCarName(normalCar,"good");
System.out.println(normalCar.name);
return;
}else {
trafficAdmin.setSpeed(crazyCar);
crazyCar.printCar();
return;
}
ff = trafficAdmin.isLegalSpeed(trafficAdmin.getCarStatus(normalCar));
if(ff) {
trafficAdmin.setAnotherCarName(normalCar,"good");
System.out.println(normalCar.name);
return;
}else {
return;
}
}
}
String name = "haha";
String color;
String direction;
int speed;
boolean isTrafficAdmin;
public Car() {
this(50,"beijing");
}
public Car(int p_speed,String p_direction) {
this(p_speed,p_direction,false);
}
public Car(int p_speed,String p_direction,boolean isTrafficAdmin) {
this.speed = p_speed;
this.direction = p_direction;
this.isTrafficAdmin = isTrafficAdmin;
}
public void dirveCar() {
speed = 50;
direction = "beijing";
}
public void raiseSpeed (int p_speed) {
if(p_speed < 0) {
System.out.println("加速度不能为负数");
return;
}else {
int currentspeed = speed + p_speed;
speed = currentspeed;
}
}
public void raiseSpeed (byte p_speed) {
if(p_speed < 0) {
System.out.println("加速度不能为负数");
return;
}else {
int currentspeed = speed + p_speed;
speed = currentspeed;
}
}
public void overTakeCar( Car another) {
speed = another.speed + 5;
direction = another.direction;
}
public void setSpeedAndDirection(int p_speed,String direction) {
speed = p_speed;
this.direction = direction;
}
public boolean isOverSpeed() {
if (speed > 60) {
return true;
}else
return false;
}
public void setAnotherCarName(Car another,String newName) {
if(!isTrafficAdmin) {
System.out.println("你没有权限");
return;
}else {
another.name = newName;
}
}
public void setSpeed(Car another) {
if(!isTrafficAdmin) {
System.out.println("你没有权限");
return;
}else {
another.speed = 0;
}
}
public CarStatus getCarStatus(Car another) {
CarStatus status = new CarStatus(another.speed,another.direction);
return status;
}
public boolean isLegalSpeed(CarStatus status) {
if(status.speed<=60) {
return true;
}else {
return false;
}
}
public void printCar() {
System.out.println(speed);
System.out.println(direction);
}
}
public class CarStatus {
int speed;
String direction;
public CarStatus() {
}
public CarStatus(int p_speed,String direction) {
this.speed = p_speed;
this.direction = direction;
}
}
public class TestCar {
public static void main(String[] args) {
Car normalCar = new Car();
normalCar.printCar();
Car crazyCar = new Car();
crazyCar.printCar();
Car trafficAdmin = new Car(40,"beijing",true);
trafficAdmin.printCar();
crazyCar.raiseSpeed(10);
crazyCar.printCar();
crazyCar.raiseSpeed((byte)10);
crazyCar.printCar();
normalCar.overTakeCar(crazyCar);
normalCar.printCar();
normalCar.setSpeedAndDirection(50,"beijing");
normalCar.printCar();
/*boolean ff = trafficAdmin.isLegalSpeed(trafficAdmin.getCarStatus(normalCar));
if(ff) {
trafficAdmin.setAnotherCarName(normalCar,"good");
System.out.println(normalCar.name);
return;
}else {
return;
}*/
//normalCar.printCar(); 这句怎么无法访问呢?
boolean ff = trafficAdmin.isLegalSpeed(trafficAdmin.getCarStatus(crazyCar));
if(ff) {
trafficAdmin.setAnotherCarName(normalCar,"good");
System.out.println(normalCar.name);
return;
}else {
trafficAdmin.setSpeed(crazyCar);
crazyCar.printCar();
return;
}
ff = trafficAdmin.isLegalSpeed(trafficAdmin.getCarStatus(normalCar));
if(ff) {
trafficAdmin.setAnotherCarName(normalCar,"good");
System.out.println(normalCar.name);
return;
}else {
return;
}
}
}
trafficAdmin.setAnotherCarName(normalCar,"good");
System.out.println(normalCar.name);
return; // 立即退出当前函数
}else {
trafficAdmin.setSpeed(crazyCar);
crazyCar.printCar();
return; // 立即退出当前函数
}你的IF语句,两个分支的最后一句都是直接 return,也即立即退出当前函数,那么后面的所有语句自然是不可能执行的到的了。
如果我只写一个这样的IF语句并且是最后的语句,好像也不会出错(我试验是这样的)?
我晕,好像真是退出的main()方法,我把上面的第一个return去掉,然后再IF语句外面加System.out.println(normal.name);验证,居然没反应。当我都去掉时,就可以打印出来信息。
我应该没判断错吧?我是在一个方法中看到里面有IF判断用return结束,他说能退出方法。不过他没有两个分支都写return……
悲催,浪费我一下午时间。
"你的IF语句,两个分支的最后一句都是直接 return,也即立即退出当前函数",这个当前函数是不是main()方法?
如果我只写一个这样的IF语句并且是最后的语句,好像也不会出错(我试验是这样的)?
我晕,好像真是退出的main()方法,我把上面的第一个return去掉,然后再IF语句外面加System.out.println(normal.name);验证,居然没反应。当我都去掉时,就可以打印出来信息。
我应该没判断错吧?我是在一个方法中看到里面有IF判断用return结束,他说能退出方法。不过他没有两个分支都写return……
悲催,浪费我一下午时间。
—— return后面如果没有其它可执行语句,是正确的。
我晕,好像真是退出的main()方法,我把上面的第一个return去掉,然后再IF语句外面加System.out.println(normal.name);验证,居然没反应。当我都去掉时,就可以打印出来信息。
我应该没判断错吧?
—— 退出当前函数,你的当前函数是main,当然就会退出main。