0

私は15歳で、Javaが初めてなので、単純な計算機を作成しようとしていますが、このifステートメントが無視される理由がわかりません。すべての値が保存されていることを確認しましたが、そうです。これを説明する他の問題は見られません。どんな助けでも素晴らしいでしょう!2 番目のクラスでコメントを探します //この if ステートメント

最初のクラス

public class CalculatorOperations {

    double fnum, snum,answer;
    String operation;

    void plus(){

        operation="+";
        answer = fnum + snum;
    }

    void subtract(){

        operation="-";
        answer = fnum - snum;
    }

    void multiple(){

        operation="*";
        answer = fnum * snum;
    }

    void divide(){

        operation="/";
        answer = fnum / snum;
    }

    void invalidOperation(){

        System.out.println("Invalid operation.");
    }

    void showAttributes(){
        System.out.println(fnum);
        System.out.println(snum);
        System.out.println(operation);
    }
}

セカンドクラス

    import java.util.Scanner;

public class calculatorApplication {

    public static void main(String [] args){

        CalculatorOperations Operators = new CalculatorOperations();
        Scanner userInput = new Scanner(System.in);

        String loop2 = null;
        boolean loop;

         while (loop = true){

            // Getting input and storing it
                System.out.print("Please enter first number: ");
                Operators.fnum = userInput.nextDouble();

                System.out.println("TEST:"+Operators.fnum);

                System.out.print("Please enter second number: ");
                Operators.snum = userInput.nextDouble();

                System.out.println("TEST:"+Operators.snum);

                System.out.print("Please enter operation (+, -, * or /): ");
                Operators.operation = userInput.next();

                System.out.println("TEST:"+Operators.operation);

                // this if statement

                if (Operators.operation == "+") {
                    Operators.plus();

                } else if (Operators.operation == "-") {
                    Operators.subtract();

                } else if (Operators.operation == "*") {
                    Operators.multiple();

                } else if (Operators.operation == "/") {
                    Operators.divide();

                } else {

                    Operators.invalidOperation();
                }



                System.out.println("Answer: " +Operators.answer);

                System.out.print("Would you like to do another sum? (yes or no): ");
                loop2 = userInput.next();


         }

         if (loop2.equals("yes") || loop2.equals("Yes")){
             loop = true;
                System.out.println();
                System.out.println();
            }else{
                loop = false;
                  // Closes scanner to prevent resource leaks 
                userInput.close();
                System.exit(0);
            }


                }

    }
4

3 に答える 3

2

通常、文字列との比較は、思い通り==には機能しません。これは、文字列がオブジェクトであり==、文字列に同一のテキストが含まれているかどうかを確認するのではなく、オブジェクト参照を相互に比較するためです。

String.equals代わりに試してください:

if (Operators.operation.equals("+")) {
... //and of course the same for the rest of the statements

あなたのプログラムで頑張ってください!

于 2013-11-03T17:27:03.100 に答える