Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在使用简单的计算器I'时遇到问题;我一直在努力_Java - Fatal编程技术网

Java 在使用简单的计算器I'时遇到问题;我一直在努力

Java 在使用简单的计算器I'时遇到问题;我一直在努力,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: jav

我一直在用一个简单的计算器来计算这些错误 信息: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;
    }

}

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

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

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

 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;
}
我建议更改名称以反映真实类型,如下所示:

 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;
}

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

在你的代码中,你有一行

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;

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

正如错误所说:
result=num1+num2尝试添加两个扫描仪,这毫无意义。你的意思可能是
result=num1int+num2int。如果您以一种更有意义的方式命名变量,您可能会避免这个错误。我想您的命名方案在这里对您自己没有多大帮助。您正在添加两个扫描仪(为什么在任何情况下都需要两个扫描仪?)。是的,当
num1
num2
都是
扫描仪类型时,您认为
num1+num2
是什么意思?也许你的意思是
num1int
num2int
?提示:
num1
对于引用扫描器来说不是一个好的变量名,因为扫描器不是一个数字。而且,你不需要两个不同的扫描仪。。。