鐘鐘空
2021-01-20 14:40
采纳率: 85.7%
浏览 18
已采纳

编写计算器模拟器代码时遇到的一些问题

做一个模拟计算器的练习,中间加注释的这段代码运行不成功,结果如下,输出的数是一个随机数吧,而且没有执行switch,有点儿不明白问题出在哪儿了,

加注释下的那段儿代码就能成功运行,这是结果

有点儿不明白加注释的那段儿代码问题出在哪儿,希望有能大佬帮帮忙~~~

  public class A {
    
        public static void main(String[] args) {
        java. util. Scanner s = new java . util. Scanner (System.in) ;    
        System. out.println("欢迎使用简单计算器系统: ") ;
                
        System. out.print("请输入第一个数字: ") ;
        int num1=s.nextInt() ;    
        
        System. out.print("请输入运算符: ") ;
        String sta=s.next() ;
        
        System. out.print("请输入第二个数字: ") ;
        int num2=s.nextInt() ;      
        
        /*
                switch (sta) {
            case "+" :
                System.out.println(num1+'+'+num2+'='+num1+num2) ;
                break;
            case "-" :
                System.out.println(num1+'-'+num2+'='+num1-num2) ;
                break;
            case "*" :
                System.out.println(num1+'*'+num2+'='+num1*num2) ;
                break;
            case "%" :
                System.out.println(num1+'%'+num2+'='+num1%num2) ;
            case "/" :
                System.out.println(num1+'/'+num2+'='+num1/num2) ;    
                break;
            default:
                System. out.println ("对不起,您输入的内容非法") ;    
        }
      */
        int result = 0;
        switch (sta) {
            case "+" :
                result = num1+num2 ;
                break;
            case "-" :
                result = num1-num2  ;
                break;
            case "*" :
                result = num1*num2  ;
                break;
            case "%" :
                result = num1%num2  ;
            case "/" :
                result = num1/num2  ;    
                break;
            default:
                System. out.println ("对不起,您输入的内容非法") ;    
        }
        System. out.print("计算结果为: "+num1+sta+num2+"="+result) ;
    }
        }
 

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • 纯白微风 2021-01-20 14:53
    已采纳

    用双引号不要用单引号,java每个case后面要加break退出,不然匹配到的之后不退出的话,后面的case也会执行。

    点赞 打赏 评论
  • qq_25376897 2021-01-20 16:52
    public class A {
    
        public static void main(String[] args) {
            java.util.Scanner s = new java.util.Scanner(System.in);
            System.out.println("欢迎使用简单计算器系统: ");
    
            System.out.print("请输入第一个数字: ");
            int num1 = s.nextInt();
    
            System.out.print("请输入运算符: ");
            String sta = s.next();
    
            System.out.print("请输入第二个数字: ");
            int num2 = s.nextInt();
    
            /**
             * 1、字符串用双引号
             * 2、运算加上括号,如(num1 + num2)
             */
            switch (sta) {
                case "+":
                    System.out.println(num1 + "+" + num2 + "=" + (num1 + num2));
                    break;
                case "-":
                    System.out.println(num1 + "-" + num2 + "=" + (num1 - num2));
                    break;
                case "*":
                    System.out.println(num1 + "*" + num2 + "=" + (num1 * num2));
                    break;
                case "%":
                    System.out.println(num1 + "%" + num2 + "=" + (num1 % num2));
                    break;//这里加上break,不然连带下面的除法也执行了;当然如果你就是要一起执行的,那就不用加break
                case "/":
                    System.out.println(num1 + "/" + num2 + "=" + (num1 / num2));
                    break;
                default:
                    System.out.println("对不起,您输入的内容非法");
            }
        }
    }
    点赞 1 打赏 评论
  • 封印di恶魔 2021-01-20 17:26

    用单引号是char类型   char和int是同个类型的     所以会全被当做数字加起来,   具体是哪些数字去了解了解ascii码

    点赞 打赏 评论

相关推荐 更多相似问题