Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 变量增量(index++)每次不增加1_Java - Fatal编程技术网

Java 变量增量(index++)每次不增加1

Java 变量增量(index++)每次不增加1,java,Java,我的程序将逐行读取一个文件,然后按分隔符|垂直行拆分该行并存储到字符串[]。但是,由于行中的列位置和列数将来会发生变化,因此我没有使用具体的索引号0,1,2,3…,而是使用index++迭代行分割标记 运行程序后,索引每次将增加超过1,而不是增加1 我的代码如下: BufferedReader br = null; String line = null; String[] lineTokens = null; int index = 1; DataModel dataModel = new Da

我的程序将逐行读取一个文件,然后按分隔符|垂直行拆分该行并存储到字符串[]。但是,由于行中的列位置和列数将来会发生变化,因此我没有使用具体的索引号0,1,2,3…,而是使用index++迭代行分割标记

运行程序后,索引每次将增加超过1,而不是增加1

我的代码如下:

BufferedReader br = null;
String line = null;
String[] lineTokens = null;
int index = 1;
DataModel dataModel = new DataModel();
try {
    br = new BufferedReader(new FileReader(filePath));
    while((line = br.readLine()) != null) {
        // check Group C only
        if(line.contains("CCC")) { 
            lineTokens = line.split("\\|");
            dataModel.setGroupID(lineTokens[index++]);
            //System.out.println(index); The value of index not equal to 2 here. The value change each running time
            dataModel.setGroupName(lineTokens[index++]);
            //System.out.println(index);
            // dataModel.setOthers(lineTokens[index++]); <- if the file add columns in the middle of the line in the future, this is required.
            dataModel.setMemberID(lineTokens[index++]);
            dataModel.setMemberName(lineTokens[index++]);
            dataModel.setXXX(lineTokens[index++]);
            dataModel.setYYY(lineTokens[index++]);
            index = 1;
            //blah blah below
        }
    }
    br.close();
} catch (Exception ex) {    
}
Prefix | Group ID | Group Name | Memeber ID | Member Name | XXX | YYY GroupInterface | AAA | Group A | 001 | Amy | XXX | YYY GroupInterface | BBB | Group B | 002 | Tom | XXX | YYY GroupInterface | AAA | Group A | 003 | Peter | XXX | YYY GroupInterface | CCC | Group C | 004 | Sam | XXX | YYY GroupInterface | CCC | Group C | 005 | Susan | XXX | YYY GroupInterface | DDD | Group D | 006 | Parker| XXX | YYY 文件格式如下所示:

BufferedReader br = null;
String line = null;
String[] lineTokens = null;
int index = 1;
DataModel dataModel = new DataModel();
try {
    br = new BufferedReader(new FileReader(filePath));
    while((line = br.readLine()) != null) {
        // check Group C only
        if(line.contains("CCC")) { 
            lineTokens = line.split("\\|");
            dataModel.setGroupID(lineTokens[index++]);
            //System.out.println(index); The value of index not equal to 2 here. The value change each running time
            dataModel.setGroupName(lineTokens[index++]);
            //System.out.println(index);
            // dataModel.setOthers(lineTokens[index++]); <- if the file add columns in the middle of the line in the future, this is required.
            dataModel.setMemberID(lineTokens[index++]);
            dataModel.setMemberName(lineTokens[index++]);
            dataModel.setXXX(lineTokens[index++]);
            dataModel.setYYY(lineTokens[index++]);
            index = 1;
            //blah blah below
        }
    }
    br.close();
} catch (Exception ex) {    
}
Prefix | Group ID | Group Name | Memeber ID | Member Name | XXX | YYY GroupInterface | AAA | Group A | 001 | Amy | XXX | YYY GroupInterface | BBB | Group B | 002 | Tom | XXX | YYY GroupInterface | AAA | Group A | 003 | Peter | XXX | YYY GroupInterface | CCC | Group C | 004 | Sam | XXX | YYY GroupInterface | CCC | Group C | 005 | Susan | XXX | YYY GroupInterface | DDD | Group D | 006 | Parker| XXX | YYY
索引++将增加1以上,而不是增加1。我想知道为什么会发生这种情况,以及如何解决它?非常感谢您的帮助。

好吧,@SomeProgrammerDude狡猾地暗示了这一点,但我要说的是:当您重置索引时,它应该设置为零,而不是1


通过从1开始索引,您总是在应该的位置之前索引一个位置,并且您可能最终会得到一个IndexOutOfBoundsException,它被您的空catch子句吞没。

索引++将增加超过1,不会。索引++极不可能被破坏。索引不应该从0开始吗?您正在调试器中运行?从不写入}捕获异常ex{}。始终正确处理异常为什么使用index=1;在if块中。