我的下面的代码有一个异常错误:
YN = input.nextLine().charAt(0); //line 13
当它运行时。分配的目的是创建一个从控制台分配了 10 个数字的数组,当我输入 10 个数字时,运行会自动完成,并给出第 13 行的错误。第 13 行有问题还是其他问题?
(数组必须是普通数组而不是arrayList)
import java.util.*;
import java.util.Arrays;
public class CountOccurrences {
static Scanner input = new Scanner(System.in);
static int[][] temp = new int[10][1];
public static void main(String[] args) {
char YN = 'y';
while (YN == 'y') {
run();
System.out.print("Continue? (y or n)\t");
YN = input.nextLine().charAt(0); // Line 13
}
}
public static void run() {
System.out.print("Enter the integers between 1 and 100: ");
int[] numbersArray = new int[10];
for (int i = 0; i < numbersArray.length; i++) {
numbersArray[i] = input.nextInt();
}
for (int i = 0; i < numbersArray.length; i++) {
Arrays.sort(numbersArray);
System.out.println(numbersArray[i]);
}
}
}
最佳答案
input.nextLine()
可能是一个空字符串,在这种情况下 input.nextLine().charAt(0)
会给你这个异常。在调用 charAt
之前,您应该检查 String
的 length()
。
现在我看到您正在使用 input.nextInt()
来读取 run()
方法中的输入,您所要做的就是添加一个 input.nextLine()
在 run()
方法的末尾,以消耗包含最终 int 的行的末尾。
不过,您仍然需要检查在 input.nextLine()
中获得的字符串的长度,因为用户可能会按 Enter 键而不是按 Y 或 N,这将导致相同的结果异常。
关于java - 使用for循环时字符串越界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29473889/