首页 > 解决方案 > 为什么在 NetBeans 的 Gradle 项目中使用 Scanner 进行用户输入编程会显示错误?

问题描述

最近我在java程序中遇到了一个奇怪的问题。我需要接受用户输入并需要对其进行一些计算。但是,当我使用 Scanner 类运行带有用户输入的程序时,我收到了相同的错误消息。我尝试使用带有 Gradle 和其他在线 java 编译器的 NetBeans 12.0 来查看问题。但是在这两种情况下,我都收到了相同的异常错误消息。与使用 Scanner 类的用户输入的每个程序一样,我得到了相同的错误消息,因此,作为参考,我在下面给出了一个示例程序,它也给出了相同的错误消息。

package RevisedMixedAlgoFindMaxPairWiseProduct;

import java.util.Scanner;

public class RevisedMixedAlgoFindMaxPairWiseProduct {

    public static long array[];

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int num = input.nextInt();
        System.out.println("num:" + num);
    }
}


    

当我编译时,它没有显示错误。但是在运行程序时,它显示了错误消息,如下图所示。消息是(Netbeans的错误消息):

JAVA_HOME="C:\Program Files\Java\jdk-15"
cd C:\Users\Rasel Azam\Documents\NetBeansProjects\RevisedMixedAlgoFindMaxPairWiseProduct; C:\Users\Rasel Azam\.gradle\wrapper\dists\gradle-6.3-bin\8tpu6egwsccjzp10c1jckl0rx\gradle-6.3\bin\gradle --configure-on-demand -x check run
Configuration on demand is an incubating feature.
> Task :compileJava
> Task :processResources NO-SOURCE
> Task :classes

> Task :run FAILED
Exception in thread "main" java.util.NoSuchElementException
    at java.base/java.util.Scanner.throwFor(Scanner.java:937)
    at java.base/java.util.Scanner.next(Scanner.java:1594)
    at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
    at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
    at RevisedMixedAlgoFindMaxPairWiseProduct.RevisedMixedAlgoFindMaxPairWiseProduct.main(RevisedMixedAlgoFindMaxPairWiseProduct.java:28)

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':run'.
> Process 'command 'C:\Program Files\Java\jdk-15\bin\java.exe'' finished with non-zero exit value 1

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 2s
2 actionable tasks: 2 executed

但相同的程序在 Windows 命令提示符和 BlueJ IDE 中成功运行。

我找不到问题是什么[但是在运行程序时,我在 Scanner 类的一个条件下得到了输入缓冲区限制,RAM 中的内存中是否有任何输入缓冲区限制] 你能建议我如何解决这个问题吗?供您参考 我的电脑配置是

8GB RAM Intel(R) Core(TM) i3-3110M CPU @ 2.40GHz 2.40 GHz Windows 10 Pro HP Probook 450 GO

标签: javaexceptionjava.util.scanneruser-inputnosuchelementexception

解决方案


可能是 Gradle 和某些版本的 JDK 设置的问题。

虽然我在使用 Gradle 在 NetBeans 12.0 版本中运行带有用户输入的程序时遇到了这个问题。对于某些在线 java 编译器,它也显示相同的错误。不知道为什么会这样,是不是我电脑的问题?

但是,当我使用 Ant 在 NetBeans 中创建项目时,相同的程序已成功运行。它也在其他一些在线编译器中成功运行。


推荐阅读