拆分功能不起作用。对于最后一个print语句,它给出了 while (inFile.hasNext())
{
String clean = inFile.nextLine();
String[] nm = clean.split(",");
for (int i = 0; i < nm.length; i++)
{
System.out.println("at index "+ i +" string is "+nm[i]);
}
System.out.print("at index"+2+"Strin"+nm[3]);
}
错误。有什么帮助吗?
input1,2,3,4,5
input2,2,3,4,5
input3,3,4,5,6
input4,3,4,5,6
input5,3,4,5,6
文本文件:
at index 0 string is input1
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at filereader.FileReader.main(FileReader.java:33)
Java Result: 1
输出:
Inventory
答案 0 :(得分:1)
代码对我来说似乎是正确的,它不应该像这样失败。我能看到的唯一原因是输入文件中是否有空行,在这种情况下System.out.print("at index"+2+"Strin"+nm[3]);
将在nm[3]
返回一个ArrayOutOfBoundException
或者你可以这样编写你的代码:
while (inFile.hasNext())
{
String clean = inFile.nextLine();
if(clean != null && clean != ""){
String[] nm = clean.split(",");
for (int i = 0; i < nm.length; i++)
{
System.out.println("at index "+ i +" string is "+nm[i]);
}
System.out.print("at index"+2+"Strin"+nm[3]);
}
}
希望这有效。
答案 1 :(得分:1)
这会给你错误:
System.out.print("at index"+2+"Strin"+nm[3]);
这是因为你要么有一个空白行,要么只有少于4个逗号分隔的行。试试这个:
System.out.print("at index"+2+"Strin"+nm[nm.length-1]);
答案 2 :(得分:1)
也许数组nm在行
没有4个元素System.out.print("at index"+2+"Strin"+nm[3]);
在打印第4个元素之前,检查数组是否包含至少4个元素。
// create a new scanner with the specified String Object
Scanner inFile = new Scanner(s);
while (inFile.hasNext())
{
String clean = inFile.nextLine();
String[] nm = clean.split(",");
for (int i = 0; i < nm.length; i++)
{
System.out.println("at index "+ i +" string is "+nm[i]);
}
if (nm.length > 3) {
System.out.print("at index"+2+"Strin"+nm[3]);
}
}