java - 数组索引越界,为什么?

标签 java arrays

代码相当简单,但我不明白为什么会出现此错误。

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class Project1 {

public static void main(String[] args) {
    String fileName = "States.csv";
    File file = new File(fileName);

    try {
        Scanner stream = new Scanner(file); // or use new File();
        while (stream.hasNext()){
            String data = stream.next();
            String[] values = data.split(",");
            System.out.println(values[3] + "***");
        }
        stream.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
}

system.out.println(values[3] - "***") 可能有问题,我看了看,但没有运气。

最佳答案

因为数组的大小可能小于4,并且您正在尝试打印第4元素(索引3 )

在打印之前检查您的数组长度:

try {
    Scanner stream = new Scanner(file); // or use new File();
    while (stream.hasNext()){
        String data = stream.next();
        String[] values = data.split(",");
        if(values.length>3){
            System.out.println(values[3] + "***");
        }
        else{
            System.out.println("Desired value is missing in this row");
        }
    }
}

关于java - 数组索引越界,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21346309/

相关文章:

java - 谁能找到破坏这个蒙德里安艺术应用程序的错误吗?

java - 将对应的值按降序排列

java - JEdi​​torPane 中 XML 标签的着色

java - 框架的应用

javascript - 如何将对象的每个值放入数组中

Javascript-将值分配给月份数组

java - 如何将两个 List<Object[]> 对象组合成一个 List<Object[]>

ruby - 打印出二维数组

c - 在 C 中与 TicTacToe 斗争

PHP - 从查询结果中获取对象数组