以下是要求使用空气,水或钢的介质的方法。如果输入的内容不是其中之一,则程序结束。如果它是有效的介质,它将要求它行进一段距离并计算通过每种介质的时间。我遇到的问题是转到else语句。
是的,这是一个作业问题。不,我不是在寻找解决方案,而是为什么不评估else和switch。我已经检查过了,我的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或medium
== y或medium
== z)相反的是:
(
medium
!= x AND medium
!= y AND medium
!= z)在这种情况下,您要打印错误消息。
关于java - 使用字符串的控制流结构的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30774802/