当前位置: 首页 > 面试题库 >

Java计算器未执行if语句

居星阑
2023-03-14
问题内容

我对编程还比较陌生,最近开始学习Java,以便转向Android编程。我以为我会创建一个非常简单的计算器来练习,但是看来我的if语句不起作用。

import java.util.Scanner;

public class Calculator {

    public static void main(String[] args) {
        //Create new scanner object
        Scanner numInput = new Scanner( System.in );

        //Enter first number
        System.out.println("Please enter the first number: ");
        int num1 = numInput.nextInt();

        //Enter the second number
        System.out.println("Please enter the second number: ");
        int num2 = numInput.nextInt();

        //Choose the operation to perform (+,-,*,/)
        System.out.println("What operation would you like to do?");
        System.out.println("Type \"+\" to add.");
        System.out.println("Type \"-\" to subtract.");
        System.out.println("Type \"*\" to multiply.");
        System.out.println("Type \"/\" to divide.");
        String opChoice = numInput.nextLine();


        //Add
        if (opChoice.equals("+")) {
            int ans = num1 + num2;
            System.out.println("Adding " + num2 + " to " + num1 + " equals " + ans + ".");
        }

        //Subtract
        else if (opChoice.equals("-")) {
            int ans = num1 - num2;
            System.out.println("Subtracting " + num2 + " from " + num1 + " equals " + ans + ".");
        }

        //Multiply
        else if (opChoice.equals("*")) {
            int ans = num1 + num2;
            System.out.println("Multiplying " + num2 + " with " + num1 + " equals " + ans + ".");
        }

        //Divide
        else if (opChoice.equals("/")) {
            int ans = num1 + num2;
            System.out.println("Dividing " + num1 + " by " + num2 + " equals " + ans + ".");
        }

    }

}

我正在使用Eclipse IDE,并且在要求执行该操作之前,它运行良好。它会显示选项,但不会让我输入任何内容(我一直在用5乘以2进行测试)。

我搜索了类似的问题,并尝试了他们的建议,但似乎仍然行不通。我将不胜感激,我想这可能只是我正在做的一个简单错误,因此,如果这看起来像一个愚蠢的问题,我深表歉意!

编辑:谢谢您的快速回复,伙计们!我很感激。是的,我固定了乘法和除法。:)


问题答案:

问题是nextInt()不占用(不读取)换行符(按[Enter]时输入的换行符)。解决此问题的一种方法是nextLine()在每次调用之后nextInt()

//Enter first number
System.out.println("Please enter the first number: ");
int num1 = numInput.nextInt();
numInput.nextLine(); // Add this

//Enter the second number
System.out.println("Please enter the second number: ");
int num2 = numInput.nextInt();
numInput.nextLine(); // Add this

解决此问题的另一种方法是使用读取数字nextLine()(返回String),然后将其解析为int

int num1 = Integer.parseInt(numInput.nextLine());

您不需要添加额外的内容,nextLine()因为nextLine()已经被调用的新行字符正在使用新行字符。

另外,如@sotondolphin所建议,您可能要检查您的*/操作。



 类似资料:
  • 我正在编写一个简单的算法来求解Euler项目#5,但其中一个if语句不起作用。在findNumber()方法中,更改字段变量“divisibleNum”的if语句不会更改变量的值,因此每次编译时,输出总是1。 我试着回答“能被1到25的所有数字平均整除(无余数整除)的最小正数是多少?” 输出需要是可被1-25整除(包括)的最小正数,但每次只打印1。

  • 你知道我怎么纠正我的代码吗?我想知道是否应该用字符串代替char,但也不能让符号工作。 代码:

  • 它直接在我的网站上找到0个结果,而不是做echo$行有什么想法吗?我希望它从我的数据库(phpmyadmin)中提取,数据库名称是events\u table。

  • 我需要解释一下,为什么执行了while()语句中的if()块。据说:while语句计算表达式,表达式必须返回布尔值。如果表达式的计算结果为true,则while语句将执行while块中的语句。请看一下这个代码: 一旦变量x超过5,不应该将其视为false吗?那么,如果执行块,该如何执行呢?基本上,它似乎为表达式5返回了真正的布尔值=5. 谢谢你的解释!

  • 函数的运行时间的长短是衡量这个函数性能的重要指标,特别是在对比和基准测试中,要得到函数的运行时间,最简单的办法就是在函数执行之前设置一个起始时间,并在函数运行结束时获取从起始时间到现在的时间间隔,这个时间间隔就是函数的运行时间。 在Go语言中我们可以使用 time 包中的 Since() 函数来获取函数的运行时间,Go语言官方文档中对 Since() 函数的介绍是这样的。 func Since(t

  • 我正在练习Python,我想写一个程序来检查当前时间,看看它是否与2:12 pm匹配,并说:所以首先我想要使用模块,但我不知道如何使用? 我的问题是我不知道如何使用时间模块。或者我用的语法对不对? 我的代码: