Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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 计算器控制台应用程序不工作_Java_Console Application - Fatal编程技术网

Java 计算器控制台应用程序不工作

Java 计算器控制台应用程序不工作,java,console-application,Java,Console Application,我正在尝试制作一个简单的计算器控制台应用程序。不管我做什么,答案都是0。有谁能告诉我什么是错误的,如果有什么是错误的,没有给我一个直接的答案 import java.util.Scanner; public class Calculator { public static void main(String[] args) { Scanner input = new Scanner(System.in); int firstNum;

我正在尝试制作一个简单的计算器控制台应用程序。不管我做什么,答案都是0。有谁能告诉我什么是错误的,如果有什么是错误的,没有给我一个直接的答案

import java.util.Scanner;

public class Calculator 
{
    public static void main(String[] args) 
    {
        Scanner input = new Scanner(System.in);

        int firstNum;
        int secondNum;
        int division = 0, addition = 0, subtraction = 0, multiplication = 0;
        String userChoice = "";
        String choices[] = {"add","multiply","divide","subtract"};

        System.out.print("Please enter first number: ");
        firstNum = input.nextInt();
        System.out.print("Please enter second number: ");
        secondNum = input.nextInt();
        System.out.println("What type of operation would you like to perform?");
        System.out.println("add, multiply, subtract or divide.");
        input.nextLine();
        userChoice = input.nextLine();

        if (userChoice.equals("add"))
        System.out.print("The answer is " + addition);
        else if (userChoice.equals("multiply"))
        System.out.print("The answer is " + multiplication);
        else if (userChoice.equals("subtract"))
        System.out.print("The answer is " + subtraction);
        else if (userChoice.equals("divide"))
        System.out.print("The answer is " + division);

        division = firstNum / secondNum;
        addition = firstNum + secondNum;
        subtraction = firstNum - secondNum;
        multiplication = firstNum * secondNum;
    }
}

正如其他人已经说过的,需要在输出之前进行计算

我建议进行更多的改进:

  • 使用正确的变量命名。例如,
    addition
    是一个操作,但变量保存此操作的结果,通常称为
    sum
    。因此,请将这些名称用于变量。实际上,您不需要四个不同的变量,请参见下文

  • 在需要的地方声明变量,而不是在函数的开头

  • 在代码中,始终执行四种可能的计算,而不仅仅是用户选择的一种

  • 代码的第二部分(输入后)可能如下所示:

        int result = 0;
        if (userChoice.equals("add")) {
            result = firstNum + secondNum;
        }
        else if (userChoice.equals("subtract")) {
            result = firstNum - secondNum;
        } 
        else if (userChoice.equals("multiply")) {
            result = firstNum * secondNum;
        } 
        else if (userChoice.equals("divide")) {
            // maybe check if secondNum is not zero
            result = firstNum / secondNum;
        }
        else {
            System.out.print("Invalid input " + userChoice);
            return;
        }
    
        System.out.print("The answer is " + result);
    

    正如其他人已经说过的,需要在输出之前进行计算

    我建议进行更多的改进:

  • 使用正确的变量命名。例如,
    addition
    是一个操作,但变量保存此操作的结果,通常称为
    sum
    。因此,请将这些名称用于变量。实际上,您不需要四个不同的变量,请参见下文

  • 在需要的地方声明变量,而不是在函数的开头

  • 在代码中,始终执行四种可能的计算,而不仅仅是用户选择的一种

  • 代码的第二部分(输入后)可能如下所示:

        int result = 0;
        if (userChoice.equals("add")) {
            result = firstNum + secondNum;
        }
        else if (userChoice.equals("subtract")) {
            result = firstNum - secondNum;
        } 
        else if (userChoice.equals("multiply")) {
            result = firstNum * secondNum;
        } 
        else if (userChoice.equals("divide")) {
            // maybe check if secondNum is not zero
            result = firstNum / secondNum;
        }
        else {
            System.out.print("Invalid input " + userChoice);
            return;
        }
    
        System.out.print("The answer is " + result);
    

    好的,看看你打印结果的位置,与你实际更改
    除法
    加法
    等值的位置相比。。。(不清楚您为什么需要这些变量-为什么不直接打印
    “答案是”+(firstNum+secondNum)
    等等?或者在if/else部分设置一个结果变量,然后打印
    System.out.println(“答案是”+answer”)
    谢谢!这很有帮助。现在工作起来很有魅力。计算机是垃圾,它们按照你告诉它们的顺序做你告诉它们的事情。”所以我应该交换“如果”语句和“计算器公式”?“不,您应该在输出之前进行计算。我们来看看您打印结果的位置,与您实际更改
    除法
    加法
    等值的位置相比……(不清楚您为什么需要这些变量-为什么不直接打印
    “答案是”+(firstNum+secondNum)
    etc?或者在if/else部分设置一个单独的结果变量,然后
    System.out.println(“答案是“+answer”);
    谢谢!这很有帮助。现在工作起来很有魅力。计算机是垃圾,它们按照你告诉它们的顺序来做你告诉它们的事情。”所以我应该交换“if”语句和“计算器公式”?“不,您应该在输出之前进行计算。