0

我需要从文本文件中读取数据并将其保存到数据库中。

我已经编写了这段代码,但它给了我一个运行时错误:

FATAL EXCEPTION: main
java.lang.ArrayIndexOutOfBoundsException: length=5; index=5

我的代码是:

public void GetFrom_Text() {

    String []message=null;

    BufferedReader br=null;
    String name1, faculty1, deparment1, officeNumber1, email1, phone1;
    long e;
    try{
        String sCurrentLine = null;

        br =new BufferedReader(new InputStreamReader(getAssets().open("ab.txt")));


        while((sCurrentLine = br.readLine()) != null) {

            if(sCurrentLine != null )
                message=sCurrentLine.split(",");

            faculty1 = message[0];
            deparment1 = message[1];
            name1 = message[2];
            officeNumber1 = message[3];
            phone1 = message[4];
            email1 = message[5];
            e = db2.insertRecord(faculty1, deparment1, name1, officeNumber1, phone1, email1, email1);
        }
    }
    catch (IOException e1) {
        e1.printStackTrace();
    } finally {
        try {
            if (br !=null)br.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}

文本文件中的行包含以下数据:

它,csa,Mohammad Bsoul,it239,4573,mbsoul@hu.edu.jo

我需要拆分每条记录并将其保存到数据库,我需要查看数据是否成功保存到数据库

4

3 回答 3

1

您的文本文件的其中一行没有被分成 6 个元素。这会导致此行发生异常...

email1=message[5];

...因为没有第 5 个索引。检查您的文本文件并确保数据正确。

于 2013-05-03T21:53:31.197 回答
1

尝试Log.d("Line from file", sCurrentLine)在拆分之前设置,您可以在 LogCat 中看到要拆分的字符串。我认为你的字符串错过了最后一个“,”

于 2013-05-03T22:02:16.267 回答
1

一些事情:

  1. 任何像 Eclipse 这样不错的 IDE 都提供了正确格式化代码的方法。在您的代码中,缩进太少了,很难阅读。您可以为项目设置“保存操作”以正确格式化。这样每次你点击保存时,你的代码都会被格式化。
  2. 为什么不能使用调试器并单步执行代码?在 message=sCurrentLine.split(","); 之后放置断点 并查看“表达式”窗口中的消息变量。
  3. 如果您查看 readLine 的代码,它会查看 '\r'、'\n' 或 '\r\n'。在您的文本文件中,您确定您有适当的换行符吗?否则,如果您的文本文件的最后一行没有正确格式化,那么您可能会崩溃
  4. 使用调试器,您应该能够清楚地看到崩溃的位置。您假设它是 at-it,csa,Mohammad Bsoul,it239,4573,mbsoul@hu.edu.jo 但这可能没问题,但是在您的代码中,如果某处缺少逗号,您仍然可以获得 ArrayIndexOutOfBounds。
  5. 可以使用调试器吗?如果没有,那么谷歌如何调试和放置断点并查看监视窗口。没有它,您将花费 10 倍(象征性地)的时间来调试这些琐碎的问题
  6. 请随时 PM 我并将您的文件发送给我,以便我查看是否缺少任何明显的东西。
于 2013-05-03T23:47:07.577 回答