我正在用Java做一个简单的超速罚单程序。当我输入负数时,我的输出"速度不能为负数。再试一次。"弹出但数字" $ 0"也出现了。
如何编写我的程序,这样如果我输入一个负值,它就会输出"速度不能为负数。再试一次。"而不是这个和" $ 0"?
这是我的代码:
public class Speeding {
public static void main(String[] args) {
System.out.println("Enter speed:");
int speed = IO.readInt();
if (speed < 0){
System.out.println("Speed cannot be negative. Try again.");
}
if (speed <=60){
System.out.println("$0");
}else if (speed > 60 && speed <=75){
System.out.println("$100");
}else if (speed > 75 && speed <=90){
System.out.println("$500");
}
}
}
答案 0 :(得分:0)
非常简单:您的第二个if
必须是else if
。
检查原始代码并添加评论:
// This will execute if speed is negative
if (speed < 0){
System.out.println("Speed cannot be negative. Try again.");
}
// This will ALSO EXECUTE if speed is negative!
if (speed <=60){
System.out.println("$0");
}else if (speed > 60 && speed <=75){
System.out.println("$100");
}else if (speed > 75 && speed <=90){
System.out.println("$500");
}
这应该是:
if (speed < 0){
System.out.println("Speed cannot be negative. Try again.");
}else if (speed <=60){
System.out.println("$0");
}else if (speed > 60 && speed <=75){
System.out.println("$100");
}else if (speed > 75 && speed <=90){
System.out.println("$500");
}
您目前有两个连续的if/else
块。第一个由if
组成,第二个由if
和else if
组成。
如果speed
为负数,则第一个块if
将触发 - 第二个块的if
也将触发。
然而,将第二个if
转换为else if
后,所有这一切都会变成一个if/else
块。因此,如果第一个条件触发,Java甚至不会查看剩余部分,并且代码的行为与预期一致。
...您可以将条件speed <= 60
更改为speed >= 0 && speed <= 60
这样,第二个if
将不再触发负值。
答案 1 :(得分:0)
目前,您有两个if
语句,因此当您输入一个负数时,它会触发此if (speed < 0)
条件和此(speed <=60)
条件。
要克服这个问题,你需要使用else-if
块,这实际上意味着只会执行一个语句。
int speed = IO.readInt();
if (speed < 0){
System.out.println("Speed cannot be negative. Try again.");
}else if (speed <=60){
System.out.println("$0");
}else if (speed > 60 && speed <=75){
System.out.println("$100");
}else if (speed > 75 && speed <=90){
System.out.println("$500");
}
答案 2 :(得分:0)
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Enter speed:");
int speed = IO.readInt();
if (speed < 0){
System.out.println("Speed cannot be negative. Try again.");
}
else if (speed <=60){
System.out.println("$0");
}else if (speed > 60 && speed <=75){
System.out.println("$100");
}else if (speed > 75 && speed <=90){
System.out.println("$500");
}
}
答案 3 :(得分:0)
负数小于0.它的也小于60.只需使用之后已使用的相同else if
结构:
if (speed < 0){
System.out.println("Speed cannot be negative. Try again.");
} else if (speed <=60){
//...