1

プログラムが動作しません。何が間違っていると思いますか?

Scanner in = new Scanner(System.in);
    System.out.print("Enter first number: ");
    double num1 = in.nextDouble();
    System.out.print("Enter second number: ");
    double num2 = in.nextDouble();
    System.out.println("Enter operation to perform: ");
    String oper = in.next();

    if(oper == "add" || oper == "addition" || oper == "+") {
        double sum = num1 + num2;
        System.out.printf("The sum of the two numbers is %d", sum);
    }

操作(文字列)を入力すると、プログラムが終了します。出力:

Enter first number: 12
Enter second number: 8
Enter operation to perform: 
"add"

Process completed.

エラーが見つからないようです、助けてください。

4

9 に答える 9

4

文字列を演算子と比較してはいけません==- それは大まかな間違いです。equals代わりに使用してください:

if(oper.equals("add") || oper.equals("addition") || oper.equals("+")) {

于 2013-01-24T12:36:05.147 に答える
2

==equals メソッドは使用しないでください。

if(oper.equals("add") || oper.equals("addition") || oper.equals("+")) 

==演算子は、比較される文字列の内容ではなく、メモリ空間内のアドレスを比較するために使用されます

于 2013-01-24T12:36:30.600 に答える
2

を使用して文字列を比較しないでください==。常に使用equals()

if("add".equals( oper ) || "addition".equals( oper ) || "+".equals( oper ) ) {

// ...
}

オブジェクト参照 (またはプリミティブ型)を==比較します。文字列は Java のオブジェクトであるため、 と を比較するoperadd、両方とも異なるオブジェクトを指します。したがって、それらに同じ値が含まれていても、==それらはまだ異なるオブジェクトであるため、 との比較は失敗します。

于 2013-01-24T12:36:37.637 に答える
1

他のすべての人が言うことをしてください:使用するequalsか、さらにはequalsIgnoreCase。(これについては他の回答にも良い説明があります。ここで繰り返すのはばかげています。)

そして、コンソールに「」なしで「追加」と入力します。

両方を行うだけで機能します。

于 2013-01-24T12:40:19.560 に答える
1
if(oper == "add" || oper == "addition" || oper == "+") {

する必要があります

if(oper.equals("add") || oper .equals("addition") || oper.equals("+")) {

.equalsメソッドを使用して、2 つの文字列が有意に等しいかどうかを確認します。演算子は、==2 つの参照変数が同じインスタンスを参照しているかどうかを確認するだけです。

于 2013-01-24T12:36:12.823 に答える
1

Stringを使用して を比較しないでください==equals代わりに使用してください。

于 2013-01-24T12:36:15.857 に答える
1

equals(..) notを使用して文字列を比較する==

交換

if(oper == "add" || oper == "addition" || oper == "+") {

if(oper.equals("add") || oper.equals("addition") || oper.equals("+")) {

==同じ内容ではなく、同じ参照について比較します。

于 2013-01-24T12:36:46.303 に答える
0

これを使って

    if("add".equals(oper)  || "addition".equals(oper) || "+".equals(oper)) {
double sum = num1 + num2;
        System.out.printf("The sum of the two numbers is %d", sum);
    }
于 2013-01-24T12:37:39.810 に答える
0

文字列の代わりにequals()orを使用するだけでなく、 の代わりにを入力する必要があります。equalsIgnore()==addcommand-line"add"

または、次のように比較する必要があります。

oper.equals("\"add\"")

また、あなたはCバックグラウンドのようです。通常、Java では次のように使用します。

System.out.println("The sum of the two numbers is " + sum);

それ以外の

System.out.printf("The sum of the two numbers is %d", sum);

値と値を%d出力するので。integernot double

于 2013-01-24T12:51:08.117 に答える