有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

switch语句Java逻辑错误第十位小数未显示

我的程序允许用户计算两个数字,然后根据用户输入的运算符执行简单的计算。所以我的源代码是:

    System.out.print("Enter First Number: ");
    int num1 = scanNum.nextInt();
    
    System.out.print("Enter Second Number: ");
    int num2 = scanNum.nextInt();
    
    System.out.print("Enter Operator (+, -, * or /): ");
    char opt = scanOpt.next().charAt(0);
    
    scanNum.close();
    scanOpt.close();
    
    
    switch (opt)    
    {
        case '+':
            float result = num1 + num2;
            System.out.println(num1 + " " + opt + " " + num2 + " = " +result);
            break;
            
        case '-':
            result = num1 - num2;
            System.out.println(num1 + " " + opt + " " + num2 + " = " +result);
            break;
        
        case '*':
            result = num1 * num2;
            System.out.println(num1 + " " + opt + " " + num2 + " = " +result);
            break;
        
        case '/':
            result = num1 / num2;
            System.out.println(num1 + " " + opt + " " + num2 + " = " +result);
            break;
        
        default:
            System.out.println("Invalid Operator!");
            break;

它工作得很好,但是每当它将两个数字分开,例如“6.0/4.0”,第十个小数就不会出现。正确的输出应为:

Enter First Number: 6
Enter Second Number: 4
Enter Operator (+, -, * or /): /
6 / 4 = 1.5

但使用我自己的源代码,输出是:

Enter First Number: 6
Enter Second Number: 4
Enter Operator (+, -, * or /): /
6 / 4 = 1.0

共 (2) 个答案

  1. # 1 楼答案

            double result;
            switch (opt)    
            {
                case '+':
                    result = (double) num1 + num2;
                    System.out.println(num1 + " " + opt + " " + num2 + " = " +result);
                    break;
                    
                case '-':
                    result = (double)num1 - num2;
                    System.out.println(num1 + " " + opt + " " + num2 + " = " +result);
                    break;
                
                case '*':
                    result = (double) num1 * num2;
                    System.out.println(num1 + " " + opt + " " + num2 + " = " +result);
                    break;
                
                case '/':
                    result = (double) num1 / num2;
                    System.out.println(num1 + " " + opt + " " + num2 + " = " +result);
                    break;
                
                default:
                    System.out.println("Invalid Operator!");
                    break;
            }
    
  2. # 2 楼答案

    之所以会出现这种情况,是因为Java将两个整数相除,从而产生一个整数输出。 尝试将输入声明为float 或者是另一种方式

    1.0 * num1 / num2
    

    这将num1“转换”为浮点值