使用for循环时字符串超出边界

时间:2015-04-06 15:05:51

标签: java arrays

我的代码下面有一个异常错误:

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]);
        }
    }
}

1 个答案:

答案 0 :(得分:4)

input.nextLine()可以是一个空字符串,在这种情况下input.nextLine().charAt(0)将为您提供该异常。在致电length()之前,您应该先检查String的{​​{1}}。

现在,我发现您使用charAt来阅读input.nextInt()方法中的输入,您需要做的是在{{1}的末尾添加run()使用方法,使用包含最终int的行的末尾。

但是,您仍然必须检查input.nextLine()中获得的字符串的长度,因为用户可能会按Enter而不是按Y或N,这将导致相同的异常。