有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

数组Java Arrayindexoutofboundexception

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

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

输出。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) 个答案

  1. # 1 楼答案

    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。第五个元素(其索引为4)不存在,因此它将抛出一个IndexOutOfBoundsException