0

シンプルな電卓を作ろうとしていて、ユーザーが指定されたタイプの操作のいずれかを入力しないと「エラー」を表示しようとすると、タイトルにエラーが表示され続けます。

import java.util.Scanner;

public class experiments {
    public static void main(String args[]) {
        Scanner userInput = new Scanner(System.in);
        String operation;
        double fNum, sNum, ans;

        //select type of operation
        System.out.println("Type addition, subtraction, multiplication, or division, then press enter");
        operation = userInput.nextLine();
        if (operation!=("addition","subtraction","multiplication","division")) {
            System.out.println("error");
        }

        //enter numbers
        System.out.println("Enter first number");
        fNum = userInput.nextDouble();
        System.out.println("Enter second number");
        sNum = userInput.nextDouble();

        //calculate
        if (operation.equals("addition")) {
            ans=fNum + sNum;
        }
        else if (operation.equals("subtraction")) { 
            ans=fNum - sNum;
        }
        else if (operation.equals("multiplication")){
            ans=fNum * sNum;
        }
        else if (operation.equals("division")) {
            ans=fNum/sNum;
        }
        //print answer
        System.out.println("The answer is ");
        System.out.println(ans);    
    }
}
4

7 に答える 7

2

次のようなオブジェクトのグループと比較することはできません。

operation!=("addition","subtraction","multiplication","division")

おそらくあなたが望むのは、「operationこれらの4つのいずれでもない場合」です。いくつかのオプションがあります。あなたが今持っているものに最も似ているのは、4 つの合法的な操作を含む新しいArrayList(例えば) を作成し、次に を使用することです。legalOperationslegalOperations.contains(operation)

ただし、「より良い Java」であるよりクリーンな方法は、 を作成し、enumそれを使用して比較を行うことです。

public enum LegalOperations {
    ADDITION,
    SUBTRACTION,
    MULTIPLICATION,
    DIVISION
}

次に、列挙型との比較を行うことができます (たとえば、列挙型にコンストラクターを与えて、列挙型定数ごとに明確な文字列値とisLegalOperationメソッドを持たせることができます)。

于 2013-06-27T04:00:09.083 に答える
1

Java はこのコマンドを理解できません...

if (operation!=("addition","subtraction","multiplication","division")) {

代わりに、それぞれを個別に確認する必要があります...

if (!"addition".equals(operation) &&
    !"subtraction".equals(operation) &&
    !"multiplication".equals(operation) &&
    !"division".equals(operation)) {
    // Handle error...
}
于 2013-06-27T04:00:00.557 に答える
1

ArrayListそこに価値を創造し、置くべきです。
次に、値がに存在するかどうかを確認できますArrayList
そのように:
Arrays.asList(...).contains(...) はどのように機能しますか?

于 2013-06-27T04:00:02.557 に答える
0

if (operation!=("addition","subtraction","multiplication","division"))は Java での比較が正しくありません。switchJava 7 またはstring.equalsメソッドを複数の if ステートメントで使用している場合は、statement を使用します。

于 2013-06-27T04:00:47.757 に答える
0

次のように contains メソッドを使用できます。

String[] operations = {"addition","subtraction","multiplication","division"};
if(!operations.contains(operation)) {
    ...
于 2013-06-27T04:02:18.930 に答える