在安装了JDK的shell服务器上,以下程序允许用户通过读入下一个整数并显示正确的输出来输入:
package hello;
import java.util.Scanner;
public class HelloWorld {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int theNextInt = in.nextInt();
System.out.println("Next integer is: " + theNextInt);
}
}
但是,当我在Windows控制台上执行gradlew run
时,会出现以下错误:
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:862)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
at java.util.Scanner.nextInt(Scanner.java:2076)
at hello.HelloWorld.main(HelloWorld.java:12)
:run FAILED
当然,发生异常是因为Scanner
不再读取任何元素。 那是因为Windows控制台不允许我输入。可以解决这个问题吗?
答案 0 :(得分:1)
我明白了。事实证明,经过进一步的研究后,我遇到了this question和this question提供相同的解决方案(有效):
在build.gradle
文件中包含以下内容:
run {
standardInput = System.in
}
因为根据the docs,对于JavaExec
类型的任务,InputStream默认为空。