1

私は初めての Java クラスを受講していますが、この課題を終わらせるのに苦労しています。

割り当て自体は非常に簡単です。私がしなければならないことは、ユーザーに整数、文字、そして別の整数を入力するように促すことだけです。

入力された文字が + の場合、2 つの整数を加算する必要があります。入力された文字が - の場合、2 つの整数を減算する必要があります。等...

問題は、ユーザーから文字を受け取り、それを If/Switch ステートメントで使用する方法がわからないことです。

ここに私のプロンプトがあります:

// Prompt the user to enter an integer
    System.out.print("Please enter an integer number:");
    int int1  = input.nextInt();

// Prompt the user to enter a character
// Since I could not use characters, I am using integers to represent them.
    System.out.print("Enter 0 for +, 1 for -, 2 for /, 3 for %, and 4 for *");
    int char1 = input.nextInt();

// Prompt the user to enter another integer
    System.out.print("Please enter another integer number:");
    int int2 = input.nextInt();

これが私の If/Switch ステートメントです: (私はそれらが冗長であることを知っていますが、それは割り当ての一部です)

if (char1 == 0) {
    int ans = int1 + int2;
    System.out.println(int1 + " + " + int2 + " = " + ans);
} else if (char1 == 1) {
    int ans = int1 - int2;
    System.out.println(int1 + " - " + int2 + " = " + ans);
} else if (char1 == 2) {
    int ans = int1 / int2;
    System.out.println(int1 + " / " + int2 + " = " + ans);
} else if (char1 == 3) {
    int ans = int1 % int2;
    System.out.println(int1 + " % " + int2 + " = " + ans);
} else if (char1 == 4) {
    int ans = int1 * int2;
    System.out.println(int1 + " * " + int2 + " = " + ans);
} else
    System.out.println("Invalid operator");

int result = 0;
switch (char1) {
    case 0: result = int1 + int2;
            System.out.println(int1 + " + " + int2 + " = " + result); break;
    case 1: result = int1 - int2;
            System.out.println(int1 + " - " + int2 + " = " + result); break;
    case 2: result = int1 / int2;
            System.out.println(int1 + " / " + int2 + " = " + result); break;
    case 3: result = int1 % int2;
            System.out.println(int1 + " % " + int2 + " = " + result); break;
    case 4: result = int1 * int2;
            System.out.println(int1 + " * " + int2 + " = " + result); break;
    default: System.out.println("Invalid operator");
}

他のすべては問題なく動作します。+ に 0、- に 1 を使用することから、+、-、/、%、および * のみを使用するように変更しようとしています。

4

3 に答える 3

2

ユーザーから演算子を文字列または文字として取得できます

このような :

 Scanner input = new Scanner(System.in);
        // Prompt the user to enter an integer
        System.out.print("Please enter an integer number:");
        int int1 = input.nextInt();

// Prompt the user to enter a character
// Since I could not use characters, I am using integers to represent them.
        System.out.print("Enter +, -,  /,  %, *");
        char char1 = input.next().charAt(0);

// Prompt the user to enter another integer
        System.out.print("Please enter another integer number:");
        int int2 = input.nextInt();

        if (char1=='+') {
            int ans = int1 + int2;
            System.out.println(int1 + " + " + int2 + " = " + ans);
        } else if (char1=='-') {
            int ans = int1 - int2;
            System.out.println(int1 + " - " + int2 + " = " + ans);
        } else if (char1=='/') {
            int ans = int1 / int2;
            System.out.println(int1 + " / " + int2 + " = " + ans);
        } else if (char1=='%') {
            int ans = int1 % int2;
            System.out.println(int1 + " % " + int2 + " = " + ans);
        } else if (char1=='*') {
            int ans = int1 * int2;
            System.out.println(int1 + " * " + int2 + " = " + ans);
        } else {
            System.out.println("Invalid operator");
        }

        int result = 0;

        switch (char1) {
            case '+':
                result = int1 + int2;
                System.out.println(int1 + " + " + int2 + " = " + result);
                break;
            case '-':
                result = int1 - int2;
                System.out.println(int1 + " - " + int2 + " = " + result);
                break;
            case '/':
                result = int1 / int2;
                System.out.println(int1 + " / " + int2 + " = " + result);
                break;
            case '%':
                result = int1 % int2;
                System.out.println(int1 + " % " + int2 + " = " + result);
                break;
            case '*':
                result = int1 * int2;
                System.out.println(int1 + " * " + int2 + " = " + result);
                break;
            default:
                System.out.println("Invalid operator");
        }
于 2013-02-03T19:28:08.000 に答える
1

あなたはこれを行うことができます:

System.out.print("Enter +, -, /, or *");
char char1 = input.nextLine().charAt(0);

nextLineユーザーが入力したもの全体を取得charAtし、指定されたインデックスで文字を取得します。

したがって、charAt(0)最初の文字を取得します。視覚的な説明は次のとおりです。上部は文字列で、下部は文字番号です。

|t|h|i|s| |i|s| |a| |t|e|s|t|
-----------------------------
|0|1|2|3|4|5|6|7|8|9|1|1|1|1|
| | | | | | | | | | |0|1|2|3|
于 2013-02-03T19:20:10.483 に答える
0

charこの方法でユーザー入力からa を使用できます。

Acharは符号なし整数値 0..65535 のみである+ため、たとえば値43['+' のユニコード]について書くことができます。

switch (char1) {
    case '+': result = int1 + int2;
        System.out.println(int1 + " + " + int2 + " = " + result); break;
    case '-': result = int1 - int2;
        System.out.println(int1 + " - " + int2 + " = " + result); break;
    case '/': result = int1 / int2;
        System.out.println(int1 + " / " + int2 + " = " + result); break;
    case '%': result = int1 % int2;
        System.out.println(int1 + " % " + int2 + " = " + result); break;
    case '*': result = int1 * int2;
        System.out.println(int1 + " * " + int2 + " = " + result); break;
    default: System.out.println("Invalid operator");
}
于 2013-02-03T19:21:00.057 に答える