使用字符串的控制流结构问题
Problems with control flow structures using strings
以下是要求介质为空气、水或钢的方法。如果输入的不是其中之一,则程序结束。如果它是一种有效的媒介,它会询问它将行进的距离并计算通过每种媒介的时间。我遇到的问题是进入 else 语句。
是的,这是一道作业题。不,我不是在寻找解决方案,只是为什么没有评估 else 和开关。我已经检查过了,我的 jdk 是版本 7。在此先感谢。
package speedofsound;
import java.util.Scanner;
public class SpeedOfSound {
public static void main(String[] args) {
String medium;
int distance, time;
Scanner read = new Scanner(System.in);
System.out.print("Enter one of the following: air, water, or steel: ");
medium = read.next();
if (!medium.equals("air")|| !medium.equals("steel")|| !medium.equals("water")){
System.out.print("Sorry, you must enter air, water, or steel.");
}
else {
System.out.print("Enter the distance the sound wave will travel: ");
distance = read.nextInt();
switch(medium){
case "air":
time = distance/1100;
System.out.println("It will take "+time+ "seconds.");
break;
case "water":
time = distance/4900;
System.out.println("It will take "+time+ "seconds.");
break;
case "steel":
time = distance/16400;
System.out.println("It will take "+time+ "seconds.");
break;
}
}
}
}
这个条件:
if (!medium.equals("air") || !medium.equals("steel") || !medium.equals("water"))
不正确。将 ||
替换为 &&
。
从字面上看可能有点混乱,但是 medium
可以 只有 等于一个值所以你想确保:
(medium
== x OR medium
== y OR medium
= =z)
相反的是:
(medium
!= x AND medium
!= y AND medium
! =z)
在这种情况下,您要打印错误消息。
条件表达式错误
使用这个
if (!medium.equals("air") && !medium.equals("steel") && !medium.equals("water"))
而不是
if (!medium.equals("air")|| !medium.equals("steel")|| !medium.equals("water"))
以下是要求介质为空气、水或钢的方法。如果输入的不是其中之一,则程序结束。如果它是一种有效的媒介,它会询问它将行进的距离并计算通过每种媒介的时间。我遇到的问题是进入 else 语句。
是的,这是一道作业题。不,我不是在寻找解决方案,只是为什么没有评估 else 和开关。我已经检查过了,我的 jdk 是版本 7。在此先感谢。
package speedofsound;
import java.util.Scanner;
public class SpeedOfSound {
public static void main(String[] args) {
String medium;
int distance, time;
Scanner read = new Scanner(System.in);
System.out.print("Enter one of the following: air, water, or steel: ");
medium = read.next();
if (!medium.equals("air")|| !medium.equals("steel")|| !medium.equals("water")){
System.out.print("Sorry, you must enter air, water, or steel.");
}
else {
System.out.print("Enter the distance the sound wave will travel: ");
distance = read.nextInt();
switch(medium){
case "air":
time = distance/1100;
System.out.println("It will take "+time+ "seconds.");
break;
case "water":
time = distance/4900;
System.out.println("It will take "+time+ "seconds.");
break;
case "steel":
time = distance/16400;
System.out.println("It will take "+time+ "seconds.");
break;
}
}
}
}
这个条件:
if (!medium.equals("air") || !medium.equals("steel") || !medium.equals("water"))
不正确。将 ||
替换为 &&
。
从字面上看可能有点混乱,但是 medium
可以 只有 等于一个值所以你想确保:
(medium
== x OR medium
== y OR medium
= =z)
相反的是:
(medium
!= x AND medium
!= y AND medium
! =z)
在这种情况下,您要打印错误消息。
条件表达式错误
使用这个
if (!medium.equals("air") && !medium.equals("steel") && !medium.equals("water"))
而不是
if (!medium.equals("air")|| !medium.equals("steel")|| !medium.equals("water"))