需求和说明:
chara的值可能是+、-、*、/或混合,要求通过运算不同new不同的对象,(十道计算题),如果是混合,则四种运算随机出题。(tempCh已声明为int chara已声明为String)
//这样写是不对的 case 5那边没有break 但是并不会按照重置的tempCh去选择转入Case1/2/3/4 而是自动进入了case 1 然后被break掉 每次都是这样
switch(chara)
{
case "+":
tempCh = 1;
break;
case "-":
tempCh = 2;
break;
case "*":
tempCh = 3;
break;
case "/":
tempCh = 4;
break;
case "混合":
tempCh = 5;
break;
default:
JFrame jf = new JFrame();
JOptionPane.showMessageDialog(jf,"出现未知错误,请重启程序。");
int flag = 0;//flag是为了在运算类型随机时重置运算类型,不重置则i = 0时修改了chara的值后之后就一直会是这个值 无法起到随机效果
if(tempCh == 5)
flag = 1;
for(int i = 0;i < 10;i++)
{
if(flag == 1)
tempCh = 5;
switch(tempCh)
{
case 5:
tempCh = (int)(Math.random()*4+1);
case 1:
questions[i] = new Addition(n);
JLBQuestions[i].setText(questions[i].printQuestion());
break;
case 2:
questions[i] = new Subtraction(n);
JLBQuestions[i].setText(questions[i].printQuestion());
break;
case 3:
questions[i] = new Multiplication(n);
JLBQuestions[i].setText(questions[i].printQuestion());
break;
case 4:
questions[i] = new Division(n);
JLBQuestions[i].setText(questions[i].printQuestion());
break;
default:
JFrame jf = new JFrame();
JOptionPane.showMessageDialog(jf,"出现未知错误,请重启程序。");
}
}
正确写法(让tempCh变成局部变量了,没有再在前面进行声明):
int flag = 0;
if(chara.equals("混合"))
flag = 1;
for(int i = 0;i < 10;i++)
{
if(flag == 1)
{
int tempCh = (int)(Math.random()*4+1);
switch(tempCh)
{
case 1:
chara = "+";
break;
case 2:
chara = "-";
break;
case 3:
chara = "*";
break;
case 4:
chara = "/";
break;
}
}
switch(chara)
{
case "+":
questions[i] = new Addition(n);
JLBQuestions[i].setText(questions[i].printQuestion());
break;
case "-":
questions[i] = new Subtraction(n);
JLBQuestions[i].setText(questions[i].printQuestion());
break;
case "*":
questions[i] = new Multiplication(n);
JLBQuestions[i].setText(questions[i].printQuestion());
break;
case "/":
questions[i] = new Division(n);
JLBQuestions[i].setText(questions[i].printQuestion());
break;
default:
JFrame jf = new JFrame();
JOptionPane.showMessageDialog(jf,"出现未知错误,请重启程序。");
}
}