如何修复 java.util.NoSuchElementException
How to fix java.util.NoSuchElementException
我正在做家庭作业,我正在通过控制台输入值。该程序尚未完成,我只是想让输入系统正常工作。我 运行 遇到了一个问题,我看到其他人 运行 遇到了其他代码片段,但我不知道如何在这种情况下实现它们。
输入格式如下:
4 - 数据行数
5 6 - 数据文件
5 6 - 数据文件
5 6 - 数据文件
5 6 - 数据集
我正在尝试制作一个长度为 1 * 2 行的数组,然后继续将其存储在数组中。我正在排队的所有其他数据集。
导入java.io.*;
导入java.util.StringTokenizer;
int arr[];
int x = 0;
BufferedReader br = new BufferedReader(newInputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
arr = new int [Integer.parseInt(st.nextToken())*2];
for (int i = 0; i < arr.length; i++) {
if ((i%2)==1) {
x = Integer.parseInt(st.nextToken());
st = new StringTokenizer(br.readLine());
} else {
x = Integer.parseInt(st.nextToken());
}
arr[i] = x;
}
System.out.println(arr.toString());
}
我发现代码中有 3 个问题:
您尝试初始化一个大小奇怪的数组。
new int [Integer.parseInt(st.nextToken())*2]
-> new int [st.countTokens()]
在您尝试从控制台读取嵌套行的情况下,它可能为空。但是当没有令牌时,您尝试读取下一个令牌。 st = new StringTokenizer(br.readLine());
中的问题 - 因此您必须添加检查:st.hasMoreTokens()
。你可以把它放在for
语句中。
我想你想用 toString() 打印数组内容——它不能像你预期的那样工作。使用 System.out.println(Arrays.toString(arr));
我正在做家庭作业,我正在通过控制台输入值。该程序尚未完成,我只是想让输入系统正常工作。我 运行 遇到了一个问题,我看到其他人 运行 遇到了其他代码片段,但我不知道如何在这种情况下实现它们。
输入格式如下: 4 - 数据行数 5 6 - 数据文件 5 6 - 数据文件 5 6 - 数据文件 5 6 - 数据集
我正在尝试制作一个长度为 1 * 2 行的数组,然后继续将其存储在数组中。我正在排队的所有其他数据集。
导入java.io.*;
导入java.util.StringTokenizer;
int arr[];
int x = 0;
BufferedReader br = new BufferedReader(newInputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
arr = new int [Integer.parseInt(st.nextToken())*2];
for (int i = 0; i < arr.length; i++) {
if ((i%2)==1) {
x = Integer.parseInt(st.nextToken());
st = new StringTokenizer(br.readLine());
} else {
x = Integer.parseInt(st.nextToken());
}
arr[i] = x;
}
System.out.println(arr.toString());
}
我发现代码中有 3 个问题:
您尝试初始化一个大小奇怪的数组。
new int [Integer.parseInt(st.nextToken())*2]
->new int [st.countTokens()]
在您尝试从控制台读取嵌套行的情况下,它可能为空。但是当没有令牌时,您尝试读取下一个令牌。
st = new StringTokenizer(br.readLine());
中的问题 - 因此您必须添加检查:st.hasMoreTokens()
。你可以把它放在for
语句中。我想你想用 toString() 打印数组内容——它不能像你预期的那样工作。使用
System.out.println(Arrays.toString(arr));