【问题标题】:Still Learning Java, Got an issue including user input仍在学习 Java,遇到包括用户输入在内的问题
【发布时间】:2023-01-13 16:22:01
【问题描述】:

当尝试为字符串获取第二个输入时,我的程序崩溃了。 错误如下:

线程“main”中的异常 java.util.NoSuchElementException 在 java.base/java.util.Scanner.throwFor(Scanner.java:937) 在 java.base/java.util.Scanner.next(Scanner.java:1478) 在计算.main(calculate.java:20)`

我的代码也是,如下:

import java.util.Scanner;
public class calculate { // W.I.P.
    public static void main(String[] args) {

        // intro
        System.out.println("Console Calculator by dotzSimplicity - Java Edition.");
        System.out.println("Possible Operators: +, -, *, /, %");

        // num1
        System.out.println("Enter your first number: ");
        Scanner input1 = new Scanner(System.in);
        int num1 = input1.nextInt();
        System.out.println(num1);
        input1.close();

        
        // operator
        System.out.println("Enter your operator: ");
        Scanner input2 = new Scanner(System.in);
        String operator = input2.next();
        System.out.println(num1 + operator);
        input2.close();

        // num2
        System.out.println("Enter your second number: ");
        Scanner input3 = new Scanner(System.in);
        int num2 = input3.nextInt();
        System.out.println(num1 + operator + num2);
        input3.close();

        // calculation
        if (operator == "+") {
            System.out.println(num1 + num2);
        } else if (operator == "-") {
            System.out.println(num1 - num2);
        } else if (operator == "*") {
            System.out.println(num1 * num2);
        } else if (operator == "/") {
            System.out.println(num1 / num2);
        } else if (operator == "%") {
            System.out.println(num1 % num2);
        } else {
            System.out.println("Invalid Operator, please try again.");
            System.exit(0);
        }

    };
}

我只是试图将字符串输入到运算符变量中,但我遇到了崩溃。

【问题讨论】:

  • 您正在为单个流创建多个扫描仪 - 只需使用单身的Scanner 的实例来读取所有输入。不过在那之后,由于将字符串与 == 进行比较,您会遇到问题 - 请参阅 stackoverflow.com/questions/513832

标签: java input crash


【解决方案1】:

在 Java 中比较字符串的正确方法是使用 .equals() 所以 if (operator == "+") 这一行应该是 if (operator.equals("+"))。 您只能使用一个对象扫描仪。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-23
    • 1970-01-01
    相关资源
    最近更新 更多