0

編集: 文字列を != と比較した以前のコードを .equals() に変更しましたが、それでも同じです。

初心者向けの電卓を作ろうとしています。私は理解できないこの無限ループに陥っています。

最初にこれを試しました:

public void GetValues()
{
    System.out.println("Welcome to the \"Math Calculator\"\n");

    System.out.print("Type in the first number: ");
    int FirstNumber = Scan.nextInt();

    System.out.print("Type in the second number: ");
    int SecondNumber = Scan.nextInt();

    System.out.println("\nWhat operation would you like to do?\n");
    System.out.println("For addition, type \"+\"");
    System.out.println("For subtraction, type \"-\"");
    System.out.println("For multiplication, type \"*\"");
    System.out.println("For division, type \"/\"\n");

    MathOperation = Scan.next();

    while (MathOperation != "+" || MathOperation != "-" || MathOperation != "*" || MathOperation != "/")
     {
        System.out.print("The value you typed, is not valid. Type again: ");
        MathOperation = Scan.next();
     }

}

それでも、何を入力しても、入力した値は無効ですというメッセージが表示されます。もう一度入力します。

私はそれを理解することはできません。私は何が欠けていますか?

EDIT2:ループを次のように変更しました:

    while (!IsEqual)
    {
        System.out.print("The value you typed, is not valid. Type again: ");
        MathOperator = Scan.next();

        if (MathOperator.equals("+") || MathOperator.equals("-") || MathOperator.equals("*") || MathOperator.equals("/"))
        {
            IsEqual = true;
        }
    }

そして今、それは機能します。私を助けるために努力してくれたすべての人に感謝します。乾杯 :)

4

4 に答える 4

1

を使用して比較を正しく記述した場合でも、2 回目の試行で得られるものを取得する必要がありますequals()

本質的にあなたが持っているものは

if (it's not all four math operations at the same time)
{
    "invalid"
}

このif節は常に true です。

于 2013-10-18T11:47:30.073 に答える