【问题标题】:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1 (Am I saving my file wrong in Java)?线程“main”java.lang.ArrayIndexOutOfBoundsException 中的异常:-1(我在 Java 中保存文件是否错误)?
【发布时间】:2015-11-03 01:57:16
【问题描述】:

我正在尝试以以下形式逐行保存文件:

number -> number
number -> number
number -> number
number -> number

等等。等等。

我已将文件保存为以下内容(在 Netbeans 中)

BufferedReader in = new BufferedReader(new FileReader("C:\\Users\\jon\\Desktop\\data.txt"));
String str=null;
ArrayList<String> lines = new ArrayList<String>();
while((str = in.readLine()) != null){
lines.add(str);

}
String[] graph = lines.toArray(new String[lines.size()]);

运行我的函数时出现此错误(代码是逐行存储文件的语法):

线程“主”java.lang.ArrayIndexOutOfBoundsException 中的异常: -1

在我职能的不同地方。我假设这是一个问题,因为我正在存储我的文件,错了吗?为什么?

【问题讨论】:

  • 异常可能不会发生在不同的地方,但stderr(错误被打印出来)是异步的,因此不同的运行事件将在输出的不同位置显示它。其次,行号呢?这是肯定的堆栈跟踪。至少告诉我们哪条线路,以便我们更好地为您提供帮助。
  • 在 ArrayIndexOutOfBoundsException 异常之后打印 e 会有所帮助。检查lines.size() 的大小。

标签: java arrays file


【解决方案1】:

所以你只想逐行阅读? 我会使用文件和扫描仪,对于使用 arraylist 的数组也可能更容易。

你必须使用的导入

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

也可以使用throws IOException

File fileData = new File("C:\\Users\\jon\\Desktop\\data.txt");
ArrayList<String> readFile = new ArrayList();
if (f.exists() && f.isFile() ) {
    Scanner sc = new Scanner(fileData);
    while (sc.hasNext()) {
        String line = sc.next();
        readFile.add(line);
    }
    sc.close();
}

如果您想读取文件,这应该可以工作,但是您提到将它们作为数字读取,为此我们必须使用整数数组列表,并且我们需要将读取的行解析为整数,这可以很简单通过替换 ArrayList&lt;String&gt; readFile = new ArrayList(); 来完成 与ArrayList&lt;Integer&gt; readFile = new ArrayList();readFile.add(line);readFile.add(Integer.parseInt(line));

希望对你有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多