1

このプログラムを正しく動作させるのに問題があります。2 つの数値が必要で、指定されたタイプの計算を実行します。これは、数か月間 Java を使用していなかった記憶をリフレッシュするために書いたものです。コードは次のとおりです。

import java.util.Scanner;
public class math {
    public static void main(String[] args){
        Scanner one = new Scanner(System.in);
        Scanner two = new Scanner(System.in);
        System.out.print("Enter a number: ");
        int n1 = one.nextInt();
        System.out.print("Enter a second number: ");
        int n2 = one.nextInt();
        System.out.print("Add, subtract, multiply, or divide? ");
        String f = two.nextLine();
        System.out.println(f);
        if (f=="add"){
            System.out.println(n1 + n2);
        }else if (f=="subtract") {
            if (n1>n2){
                System.out.println(n1 - n2);
            }else{
                System.out.println(n2 - n1);
            }
        }else if (f=="multiply"){
            System.out.println(n1 * n2);
        }else if (f=="divide"){
            if (n1>n2){
                System.out.println(n1 / n2);
            }else{
                System.out.println(n2 / n1);
            }
        }
    }
}

編集:ありがとう、それは f.equals() で動作します

4

4 に答える 4

3

String.equals()文字列の比較は、次の代わりに使用するように変更する必要があります==

if (f=="add"){

if ("add".equals(f)){

    }else if (f=="subtract") {

    }else if ("subtract".equals(f)) {

于 2012-09-15T16:01:55.670 に答える
3
if (f=="add")

参照を比較します。必要がある

if(f.equals("add"))

Javaには多くのオブジェクトがあり、プリミティブに対して行っていない限り、主に==が参照比較に使用されるためです。

内部に文字列があるかどうかを確認したい場合は、

if(f.contains("asdas"))
于 2012-09-15T16:00:43.773 に答える
3

文字列を と比較しています。代わり==に使用しf.equals("add")ます (他の比較と同じです)。一般に、==オブジェクト ( など) ではなく、プリミティブ データ型でのみ使用する必要がありますString

import java.util.Scanner;
public class math {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.print("Enter a number: ");
        int n1 = in.nextInt();
        System.out.print("Enter a second number: ");
        int n2 = in.nextInt();
        System.out.print("Add, subtract, multiply, or divide? ");
        String f = in.nextLine();
        System.out.println(f);
        if (f.equals("add")) {
            System.out.println(n1 + n2);
        } else if (f.equals("subtract")) {
            if (n1 > n2){
                System.out.println(n1 - n2);
            } else {
                System.out.println(n2 - n1);
            }
        } else if (f.equals("multiply")) {
            System.out.println(n1 * n2);
        } else if (f.equals("divide")) {
            if (n1>n2) {
                System.out.println(n1 / n2);
            } else {
                System.out.println(n2 / n1);
            }
        }
    }
}

また、インスタンスを 2 つ使用する必要はありませんScanner。1 つあれば十分です。余談ですが、文字列にはequalsIgnoreCase等しいかどうかをテストするメソッドもありますが、文字の大文字と小文字は無視されます。

于 2012-09-15T16:00:46.163 に答える
0

その間

f.equals("add");

Add を入力すると動作しますが、動作しません。これを修正するには、 f.equals("word") を次のように置き換えます

f.equalsIgnoreCase("add");

どのような場合でも、AddD が機能し、ADD が機能し、aADD が機能するなどです。

お役に立てれば!

于 2015-08-02T00:48:32.557 に答える