使用字符串的控制流结构的问题

时间:2015-06-11 07:52:57

标签: java if-statement switch-statement controls

以下是要求空气,水或钢的介质的方法。如果输入的内容不是其中之一,则程序结束。如果它是有效的介质,它会询问它将行进的距离并计算通过每种介质的时间。我遇到的问题是转到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;

    }

    }
  }  
}

2 个答案:

答案 0 :(得分:1)

这个条件:

 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)

在这种情况下,您要打印错误消息。

答案 1 :(得分:0)

条件表达式错误

使用此

 if (!medium.equals("air") && !medium.equals("steel") && !medium.equals("water"))

而不是

 if (!medium.equals("air")|| !medium.equals("steel")|| !medium.equals("water"))