问题描述
我必须将文件读入一个数组列表,然后从 arrlist 中逐行读取,以便分隔成命令(i 表示插入)和键(要插入的数字)。因为我正在建立一个跳过列表。我的文件由:
我 2173
我 2307
我 2405
我 1512
我 1783
我 60
编辑:&是的,每个插入命令旁边都有一个数字。
问题是我的程序突然越界了:
int key = Integer.parseInt(letter[1]);
为什么会发生这种情况?它以前成功地工作过,但突然它越界了,当我进行打印测试时,它也在文件行之间跳过了 1 行。 代码如下。谢谢。
错误:线程“main”中的异常java.lang.Arrayindexoutofboundsexception:SkipList.main(SkipList.java:103)处的长度为1的索引1超出范围
import java.io.*;
import java.util.*;
import java.lang.StringBuild
public class SkipList{
public static void main(String[] args) throws IOException{
String line;
File file = new File("src/in10.txt");
Scanner in = new Scanner(file);
//copying File content
ArrayList<String> arrList = new ArrayList<>();
// Populates array list with text file content
while(in.hasNextLine()) {
arrList.add(in.nextLine());
}
for ( int i = 0; i < arrList.size(); i++){
line = arrList.get(i);
// System.out.println(line);
//Splits Line with space delimiter into String Array
String[] letter = line.split(" ");
String command = letter[0];
int key = Integer.parseInt(letter[1]); //ERROR occurs here?
}
}
}
解决方法
// System.out.println(line);
//Splits Line with space delimiter into String Array
String[] letter = line.split(" ");
您给出了一些基本的建议:
- 显示线条
- 显示数组长度
所以代码应该是这样的:
System.out.println("(" + line ")");
//Splits Line with space delimiter into String Array
String[] letter = line.split(" ");
System.out.println(letter.length);
第一个 println() 会告诉你文件中是否有空行。
第二个 println() 会告诉你拆分是如何工作的。正如建议的那样,您可能在字符串中没有“”,而是一个不可打印的字符。
我们无法为您调试代码,因为我们无权访问您的文本文件。