代码相当简单,但我无法弄清楚为什么我会收到此错误。
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] - "***")
出现了问题,我看起来却没有运气。
答案 0 :(得分:5)
因为array
的大小可能小于4
并且您正在尝试打印4th
元素(索引3
)
打印前检查array
长度:
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");
}
}
}
答案 1 :(得分:0)
似乎值的长度小于4.这就是它导致值异常的原因[3]。如果要打印最后一个值,则可以使用
System.out.println(values[values.length - 1] + "***");
或者如果您需要打印第4个索引,请检查值的大小是否小于4
if(values.lenght > 3)
System.out.println(values[3] + "***");
答案 2 :(得分:0)
请检查最小长度为4的值。
// For printing all splited values
for(String val : data.split(",")){
System.out.println(val);
}
建议:
在finally块中关闭你的流
注意:数组索引从0
开始,而不是从1
开始
答案 3 :(得分:0)
尝试查看数据字符串。 split()方法围绕逗号分开。如果原始字符串中只有一个逗号,则values数组的长度仅为2。