StringTokenizer st = new StringTokenizer(bo.readLine());
int k = 0;
while (st.hasMoreTokens()) {
a[k++] = Integer.parseInt(st.nextToken());
}//This line is giving exception.
for (int j = 0; j < k; j++) {
int temp = a[j];
int temp1 = a[j + 1];
int num = temp + temp1;
我想要输出这一行。
答案 0 :(得分:0)
在这两种情况下:
您尝试访问a
而未进行任何检查,以确定k
和j + 1
是否会产生超出a
大小的值。
您可能有一些排序int[] a = new int[1];
的代码。
要解决此问题,您需要:
a
的限制:
while (st.hasMoreTokens() && (k < a.length))
for (int j = 0; ((j < k) && ((j + 1) < a.length); j++) {
答案 1 :(得分:0)
只是为了确定,你是否初步确定了&#39; a&#39;代码中的数组...... 并且在java中你必须给出你正在使用的数组的大小...所以可能是数组的大小很小,其中变量k变得大于数组的最后一个索引&#39; a&# 39;所以我建议您使用arrayList或使用列表而不是数组...
答案 2 :(得分:0)
您必须动态更改整数数组的大小 或者只是使用数组列表或列表来存储整数
使用扫描仪读取用户输入
Scanner scanner = new Scanner(System.in)
此代码使用动态数组
StringTokenizer int_string = new StringTokenizer(scanner.nextLine());
int length = int_string.countTokens();
int integer_array [] = new int[length];
for (int i = 0; i < length; i++) {
integer_array[i] = Integer.parseInt(int_string.nextToken());
}
System.out.println(Arrays.toString(integer_array));
此代码使用array_list
StringTokenizer int_string = new StringTokenizer(scanner.nextLine());
ArrayList<Integer> number_list = new ArrayList<>();
while (int_string.hasMoreTokens()) {
number_list.add(Integer.parseInt(int_string.nextToken()));
}
System.out.println(Arrays.toString(number_list.toArray()));
这里是一行中的示例输入字符串:
10 20 30 40 50 450 6060 50504 989898 56456 20 10100 5460 0365 000
,输出为:
[10, 20, 30, 40, 50, 450, 6060, 50504, 989898, 56456, 20, 10100, 5460, 365, 0]