java - 将字符串从数组拆分为另外 3 个时出现 ArrayIndexOutOfBoundsException

标签 java arrays string parsing split

这是我的代码:

for (int i = 0; i < 99; i++)
{

String inputString = keyboard.next();
String[] inputArray = inputString.split(":");

if (inputString.equals("quit"))
    System.out.println("You have quit");

FirstArray[i] = inputArray[0];
SecondArray[i] = Integer.parseInt(inputArray[1]);  // these throw errors
ThirdArray[i] = Integer.parseInt(inputArray[2]);    

System.out.println(FirstArray[i]);
System.out.println(SecondArray[i]);
System.out.println(ThirdArray[i]);

这是我的代码,我正在尝试测试数组,我需要使用分隔符“:”从用户拆分中获取输入

我必须parseInt最后两个数组(因为它们接受整数值)以从 inputArray 的第二个和第三个索引获取分割输入。

我有代码的最后一部分来测试它是否有效,它确实有效,但是当我输入“quit”来结束循环时,它会抛出:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1

我已经搜索并理解了这个问题,但不知道如何避免它。抱歉,如果我没有解释我的问题,我将不胜感激另一个可行的解决方案。预先感谢您的帮助

最佳答案

字符串“quit”不包含任何“:”字符,因此inputString.split(":")的结果是一个包含单个元素的数组。因此,一旦您尝试访问 inputArray[1],就会出现异常,因为索引 1 引用数组中的第二个元素,尽管该数组只有一个元素

if (inputString.equals("quit")) {
    System.out.println("You have quit");
    return;  // add this line
}

添加 return 语句(如上所示),这将绕过有问题的代码。无论如何,这似乎是正确的做法,因为用户要求退出该程序。

关于java - 将字符串从数组拆分为另外 3 个时出现 ArrayIndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34714041/

相关文章:

c - 传递参数使指针来自整数

java字符串替换的最佳方法

java - 在大量字符串中搜索最接近的匹配项的最有效方法是什么?

java - 为什么 Spring Metrics 显示初始堆大小大于最大大小?

PHP 和 MySQL - 哪种变量类型最适合该数组?

java - 仅排除一级 Log4j Logger

php - 使用数组更新mysql数据库中的数据

c++ - 实现子字符串 C++

java - Weblogic健康监控功能

java - java中如何对具有不同属性的列表进行排序