java - 使用for循环时字符串越界

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

最佳答案

input.nextLine() 可能是一个空字符串,在这种情况下 input.nextLine().charAt(0) 会给你这个异常。在调用 charAt 之前,您应该检查 Stringlength()

现在我看到您正在使用 input.nextInt() 来读取 run() 方法中的输入,您所要做的就是添加一个 input.nextLine()run() 方法的末尾,以消耗包含最终 int 的行的末尾。

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

关于java - 使用for循环时字符串越界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29473889/

相关文章:

java - 质数循环仅将 "2"写入控制台。 java

java - Python 生成的 XML 中的错误

java - Corda 显式升级(Java)

java - 如何在 Java 中为 REST 服务获取 WSDL

arrays - 如何访问 vue js 列表中的对象元素(nuxt)

arrays - ruby 字母数字排序未按预期工作

c# - 按数字方式对 List<String[]> 进行排序

java - 打印出带有字符的 ASCII 圆和轴

python - 在 numpy 中创建索引数组 - 消除双循环

javascript - Array.sort 不会对对象中具有 NaN 值的数组重新排序