Scanner sc=new Scanner(System.in);
int k=sc.nextInt();
sc.nextLine();
while(k-->0)
{
boolean t =false;
int n=sc.nextInt();
int l=sc.nextInt();
int i,j,m;
int a[]= new int[n];
for(i=0;i<n;i++)
{
a[i]=sc.nextInt();
}
for(i=0;i<n-2;i++)
{
for(j=i+1;j<n-1;j++)
{
for(k=j+1;k<n;k++)
{
if((a[i]+a[j]+a[k])==l)
{
t=true;
break;
}
}
}
}
String f= t?"true":"false";
System.out.println(f);
}
sc.close();
线程“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 Solution.main(Solution.java:17)
示例输入
3
5 60
1 20 40 100 80
示例输出false
我尝试了什么?
if(sc.hasNextInt())
n=sc.nextInt();
if(sc.hasNextInt())
l=sc.nextInt();
对于假定的hasNextInt()修复,我得到了更多的重复输出(即false)。
答案 0 :(得分:0)
3
5 60
1 20 40 100 80
false
这是我在运行代码后得到的内容。我猜你的代码是正确的。但你没有给它输入。
当扫描仪无法找到您要求阅读的内容时,会抛出 java.util.NoSuchElementException
。
提供完全正确的输入。
答案 1 :(得分:0)
您的代码似乎已经关闭了扫描仪。不要关闭它&amp;在程序中重新实例化,而在主程序开始时将其初始化一次。在主程序结束时关闭它。
扫描仪在资源关闭时关闭,因为它实现了 可关闭的界面。
如下例所示 -
public static void main(String[] args) throws IOException {
Scanner scanner = new Scanner(System.in);
System.out.println(System.in.available());
scanner.close();
scanner = new Scanner(System.in);
// System.out.println(System.in.available());
// If you uncomment above: It will give you java.io.IOException: Stream closed
String str = scanner.nextLine();
}
从帖子java.util.NoSuchElementException - Scanner reading user input
获得此答案答案 2 :(得分:-1)
在开始时进行迭代,并检查这样的条件:
do {
//Here the code
} while (i.hasNextInt());
并且对于扫描仪错误,您应该检查扫描仪是否有这样的
Scanner sc =new Scanner(System.in);
if (sc.hasNext()) {
//here the code
}