Java:在比较字符串时,相当于!=

时间:2015-12-05 02:25:17

标签: java string boolean

我希望只要用户在忽略大小写时输入“停止”或“继续”以外的值,就会执行while循环。我怎样才能做到这一点?每当我运行程序时,即使我输入继续或停止,它也会输出“无效条目”。我究竟做错了什么?

package butt;

    import java.util.*; // used for console input

    public class butt_face{

    static Scanner console = new Scanner(System.in); // needed for user input

    public static void main(String[] args) {

   String strContinue; // input from console and used for boolean

    System.out.println("Would you like to stop or continue? ");
    strContinue = console.next();
    while(!(strContinue.equalsIgnoreCase("stop")) || !(strContinue.equalsIgnoreCase("continue")))
        {   
            System.out.println("Invalid entry");
            System.out.println("Would you like to stop or continue? ");
            strContinue = console.next();
        } // end while
    if(strContinue.equalsIgnoreCase("stop")
    {
        System.out.println("Good bye!");
    } // end if
    else
        System.out.println("Poop Ship Destroyer");

    } // end of main

    } // end of class

4 个答案:

答案 0 :(得分:7)

您的操作符错误:

!(strContinue.equalsIgnoreCase("stop"))
除非truestrContinue,否则

"stop"

!(strContinue.equalsIgnoreCase("continue"))
除非truestrContinue,否则

"continue"

strContinue不能同时为"stop""continue",因此至少有一个条件始终为true,而false || truetrue }。

解决方案:将或(||)更改为和(&&)。

答案 1 :(得分:1)

您需要更换&&在条件而不是|| 检查repl https://repl.it/B6GJ/0

答案 2 :(得分:0)

问题在于你的逻辑。

  while(!(strContinue.equalsIgnoreCase("stop")) || !   (strContinue.equalsIgnoreCase("continue")))

此部分检查strContinue是否等于stop,如果等于stop,则检查strContinue是否等于continue。

答案 3 :(得分:-5)

在输入这两个字符串之一之前,执行类似于调用输入扫描程序的输入函数。