2

我想知道如何从 switch 语句初始化 int c 。我不知道如何将随机开关参数“提取”到最终答案中。我是初学者,所以也许我在这里遗漏了一些明显的东西。这是我到目前为止的代码:

import java.util.*;
public class whileTest{
public static void main (String args[]){
    Scanner sc = new Scanner(System.in);

    String a;

        do{

        String operatorSwitch;
        int b;
        int c;

        Random number = new Random();
        int d = number.nextInt(100) +1;
        int e = number.nextInt(100) +1;

        Random operatorChoice = new Random();
        int operator = operatorChoice.nextInt(4);

        switch (operator){

            case 0: operatorSwitch= "+";
                c = d+e;
                break;
            case 1: operatorSwitch= "-";
                c = d-e;
                break;
            case 2: operatorSwitch= "*";
                c = d*e;
                break;
            case 3: operatorSwitch= "/";
                c = d/e;
                break;
            default: operatorSwitch= "";
        }
        System.out.println("What is: "+d+operatorSwitch+e+"?");
        b = sc.nextInt();


        if(b!=c)
            System.out.println("Wrong answer! Right answer is: "+c);
        else{if(b==c)
            System.out.println("Right answer!"+c);
        }
            System.out.println("Continue? y/n");
            a = sc.next();

        }while(a.equals("y"));
    }
}
4

2 回答 2

3

作为一种实践,除非您有充分的理由,否则您应该始终显式地初始化变量。在这种情况下,您要更改:

String operatorSwitch;
int b;
int c;

对此:

String operatorSwitch = null;
int b = 0;
int c = 0;

您当前代码的问题是编译问题,因为变量“c”可能未初始化。

于 2013-01-18T20:32:54.177 回答
1

不确定你想让它有多漂亮,但你可以编写一个带有匿名子类的 Operator 接口,并从中选择一个随机索引。

interface Operator{
    public int operateOn( int a, int b );
    public char getDisplayChar();
}

Operator[] operators = {new Operator(){
        public int operateOn(int a, int b){
            return a + b;
        }

        public char getDisplayChar(){
            return '+';
        }
    }, new Operator(){
        public int operateOn(int a, int b){
            return a - b;
        }

        public char getDisplayChar(){
            return '-';
        }
    } // etc.
    };
于 2013-01-18T20:41:10.457 回答