一个错误的switch用法示例

需求和说明:
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,"出现未知错误,请重启程序。");
            }
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值