有 Java 编程相关的问题?

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

java在一个我一直试图制作的简单计算器上遇到了问题

我一直在用一个简单的计算器来计算这些错误 信息:java:编译模块“学习”时出错

Error:(24, 31) java: bad operand types for binary operator '*'
 first type:  java.util.Scanner
  second type: java.util.Scanner


Error:(27, 31) java: bad operand types for binary operator '/'
first type:  java.util.Scanner
second type: java.util.Scanner


 Error:(21, 31) java: bad operand types for binary operator '-'
 first type:  java.util.Scanner
 second type: java.util.Scanner


Error:(18, 31) java: bad operand types for binary operator '+'
 first type:  java.util.Scanner
  second type: java.util.Scanner


Error:(16, 16) java: incompatible types: java.util.Scanner cannot be converted to int

这是我的密码

import java.util.Scanner;

class Main {

public static void main(String[] args) {
    Scanner Operation = new Scanner(System.in);
    Scanner num1 = new Scanner(System.in);
    Scanner num2 = new Scanner(System.in);
    float result = 0;

    System.out.println("What is your first number?");
    int num1int = num1.nextInt();
    System.out.println("What is your second number?");
    int num2int = num2.nextInt();
    System.out.println("What operation would you like to perform?");
    switch (Operation) {
        case "addition":
            result = num1 + num2;
            break;
        case "subtraction":
            result = num1 - num2;
            break;
        case "multiplication":
            result = num1 * num2;
            break;
        case "division":
            result = num1 / num2;
            break;
    }

}

谢谢你们的帮助,伙计们,还有,如果我不应该发布这个,我很抱歉,我是新来的


共 (2) 个答案

  1. # 1 楼答案

    在你的代码中,你有一行

    result = num1 + num2;
    

    尝试将num1和num2相加。给定变量名称,这似乎是合理的,但是当你考虑这些行时,它变得荒谬:

    Scanner num1 = new Scanner(System.in);
    Scanner num2 = new Scanner(System.in);
    

    你不能添加两个扫描仪,这在理论上没有意义,在实践中更没有意义。我猜你是想这么做的:

    result = num1int + num2int;
    

    理论上这很好,但是当你尝试用num1int=3和num2int=4执行这个操作时,你会得到result=0而不是result=0.75:

    result = num1int / num2int;
    

    这是因为整数除法总是向0取整。为了避免这种情况,将石膏加倍,如下所示:

    result = ((double) num1int) / num2int;
    

    我希望这有助于澄清你的问题。祝你好运

  2. # 2 楼答案

    num1num2不是数字,而是java.util.Scanner类型

    您可能会使用num1intnum2int,如下所示:

     switch (Operation) {
        case "addition":
            result = num1int + num2int;
            break;
        case "subtraction":
            result = num1int - num2int;
            break;
        case "multiplication":
            result = num1int * num2int;
            break;
        case "division":
            result = num1int / num2int;
            break;
    }
    

    我建议更改名称以反映真实类型,如下所示:

    Scanner scannerNum1 = new Scanner(System.in);
    Scanner scannerNum2 = new Scanner(System.in);
    float result = 0;
    
    System.out.println("What is your first number?");
    int num1 = scannerNum1.nextInt();
    System.out.println("What is your second number?");
    int num2 = scannerNum2.nextInt();
    switch (Operation) {
        case "addition":
            result = num1 + num2;
            break;
        case "subtraction":
            result = num1 - num2;
            break;
        case "multiplication":
            result = num1 * num2;
            break;
        case "division":
            result = num1 / num2;
            break;
    }
    

    注意:另外,定义两个扫描仪是不必要的。一个就够了