我正在尝试从控制台获取输入,但不知道为什么它显示错误。
我正在尝试打印两个数字之间的素数之和。
我正在ManipalProlearn的在线学习平台上尝试这个。
import java.util.Scanner;
public class SumOfPrimeNumbers {
/**
* Main method
* @param args
*/
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n1=scan.nextInt();
int n2=scan.nextInt();
scan.close();
if((n1<3 || n1>1000)&&(n1>n2))
{
System.out.print("INVALID_INPUT");
}
else{
int sum=0;
for(int i=n1;i<=n2;i++)
{
isprime(i);
sum+=i;
}
System.out.print(sum);
}
}
public static boolean isprime(int i){
int j;
for(j=2;j<=i/2;j++)
{
if(i%j==0) return false;
}
return true;
}
}
堆栈跟踪如下:
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:907)
at java.util.Scanner.next(Scanner.java:1530)
at java.util.Scanner.nextInt(Scanner.java:2160)
at java.util.Scanner.nextInt(Scanner.java:2119)
at SumOfPrimeNumbers.main(SumOfPrimeNumbers.java:9)
最佳答案
您需要监听扫描仪的声音,例如 https://www.geeksforgeeks.org/scanner-nextint-method-in-java-with-examples/
Scanner scanner = new Scanner(s);
while (scanner.hasNext()) {
// if the next is a Int,
// print found and the Int
if (scanner.hasNextInt()) {
System.out.println("Found Int value :"
+ scanner.nextInt());
}
// if no Int is found,
// print "Not Found:" and the token
else {
System.out.println("Not found Int value :"
+ scanner.next());
}
}
因此,在您的情况下,请使用存储这些数字的列表,而 while 条件将为 (list.size() < 2 && scanner.hasNext())
关于java - 线程 "main"java.util.NoSuchElementException 中出现异常,无法从控制台获取输入整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58265869/