Java Arrayindexoutofboundexception

时间:2013-09-18 09:34:47

标签: java arrays

try {
    rs = stmt.executeQuery("select firstname, middlename, lastname from users where  username = '" + var_1 + "'");
    if (rs == null || (!rs.next())) {
        record = var_1;
        FileInputStream file = new FileInputStream("C:/workspace/table_export.txt");
        BufferedReader br = new BufferedReader(new InputStreamReader(file));
        String line = null;
        while ((line = br.readLine()) != null) {
            String[] tokens = line.split("\\s+");
            if (tokens[0].equals(record)) {
                int size = tokens.length;
                for (int i = 0; i <= size; i++) {
                    fw.append(tokens[i]);
                    fw.append(',');
                }
                fw.append('\n');
            }
        }
    }
}

大家好,

尝试使用从文本文件中检索的过滤器值来查询数据库。

如果结果集返回空,我在同一文本文件中搜索该过滤器值,并通过拆分空格将包含值的整行复制到数组中。

然后我将数组写入csv文件。

我的文字文件包含这样的值

yzr200123 xxxx yyyy  
dd4534554 xydy frde

var_1=yzr200123, dd4534554

注意:db中不存在这个var_1值,所以我必须在文本文件中搜索值并将整行写入csv ..

output.csv

yzr200123,xxxx,yyyy

dd4534554,xydy,frde

正如人们可以看到它写入csv文件但我得到以下异常,

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at simplejdbc.SimpleJDBC.getstaffid(SimpleJDBC.java:119)
at simplejdbc.SimpleJDBC.main(SimpleJDBC.java:64)

有没有办法可以通过调整代码来避免这种异常。 任何投入都将受到赞赏。

提前致谢

1 个答案:

答案 0 :(得分:4)

for(int i=0;i<=size;i++)

错了。由于数组索引从0开始,因此您必须循环到i<size

for(int i=0;i < size;i++) {
    fw.append(tokens[i]);
    fw.append(',');
}

假设数组长度为4。索引从0开始,因此可用索引为0, 1, 2, 3。使用循环,您将尝试访问索引0, 1, 2, 3, 4。第5个元素(具有索引4)不存在,因此它将抛出IndexOutOfBoundsException