求教小问题(boolean赋值问题)

MUTTOU 2012-09-16 05:29:34
前面是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;
}
}
}
...全文
250 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
MiceRice 2012-09-17
  • 打赏
  • 举报
回复
如果我只写一个这样的IF语句并且是最后的语句,好像也不会出错(我试验是这样的)?
—— return后面如果没有其它可执行语句,是正确的。


我晕,好像真是退出的main()方法,我把上面的第一个return去掉,然后再IF语句外面加System.out.println(normal.name);验证,居然没反应。当我都去掉时,就可以打印出来信息。
我应该没判断错吧?
—— 退出当前函数,你的当前函数是main,当然就会退出main。
MUTTOU 2012-09-17
  • 打赏
  • 举报
回复
谢谢!!!
MUTTOU 2012-09-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
if(ff) {
trafficAdmin.setAnotherCarName(normalCar,"good");
System.out.println(normalCar.name);
return; // 立即退出当前函数
}else {
trafficAdmin.setSpeed(crazyCar);
crazyCar.printCar();
retu……
[/Quote]

"你的IF语句,两个分支的最后一句都是直接 return,也即立即退出当前函数",这个当前函数是不是main()方法?
如果我只写一个这样的IF语句并且是最后的语句,好像也不会出错(我试验是这样的)?
我晕,好像真是退出的main()方法,我把上面的第一个return去掉,然后再IF语句外面加System.out.println(normal.name);验证,居然没反应。当我都去掉时,就可以打印出来信息。
我应该没判断错吧?

我是在一个方法中看到里面有IF判断用return结束,他说能退出方法。不过他没有两个分支都写return……
悲催,浪费我一下午时间。

MUTTOU 2012-09-16
  • 打赏
  • 举报
回复
"你的IF语句,两个分支的最后一句都是直接 return,也即立即退出当前函数",这个当前函数是不是main()方法?
如果我只写一个这样的IF语句并且是最后的语句,好像也不会出错(我试验是这样的)?
我晕,好像真是退出的main()方法,我把上面的第一个return去掉,然后再IF语句外面加System.out.println(normal.name);验证,居然没反应。当我都去掉时,就可以打印出来信息。
我应该没判断错吧?

我是在一个方法中看到里面有IF判断用return结束,他说能退出方法。不过他没有两个分支都写return……
悲催,浪费我一下午时间。
MiceRice 2012-09-16
  • 打赏
  • 举报
回复
if(ff) {
trafficAdmin.setAnotherCarName(normalCar,"good");
System.out.println(normalCar.name);
return; // 立即退出当前函数
}else {
trafficAdmin.setSpeed(crazyCar);
crazyCar.printCar();
return; // 立即退出当前函数
}

你的IF语句,两个分支的最后一句都是直接 return,也即立即退出当前函数,那么后面的所有语句自然是不可能执行的到的了。

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧