java - java中通过索引从字符串中获取字符

标签 java for-loop

我可能只是累了,无法正常思考了,但为什么“13”在这里只打印一次? (intelliJ 告诉我“i == 11 | i == 13”始终为真,但我不明白这有什么意义)

        for (int i = 0; i < 14; i++) {
            System.out.println(i);
            String line = clientReader.readLine();
            int length = line.length();
            if (i == 0 || i == 5 || i == 6) {
                line = line.substring(7, length - 6);
            } else if (i == 1 || i == 2 || i == 3 || i == 4 || i == 8 || i == 9 || i == 10 || i == 12) {
                line = line.substring(8, length - 7);
            } else if (i == 7) {
                line = line.substring(9, length - 8);
            } else if (i == 11 || i == 13) {
                line = line.substring(10, length - 9);

            }
            data[i] = line;
            System.out.println(i);
        }

附:如果我在最后一个 else 的末尾添加 System.out.println(line) 如果它打印正确的内容,则 line.substring 不会给出错误。

最佳答案

最后else if始终为真,因为您的循环控制变量从 0 运行直到13以及在最后一个 else if 之前您没有检查过的唯一两个数字是 1113因此,如果上述条件都不成立,则 i将是 1113因此,为什么 IntelliJ 足够聪明,知道它总是正确的,因此控制将始终绑定(bind)在最后一个 else if 内。不满足上述条件时阻塞。

如果将循环条件增加到类似 i < 15 的值或以上则 IntelliJ 不会声明 else if (i == 11 || i == 13)始终为 i可能是14 .

关于java - java中通过索引从字符串中获取字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48480634/

相关文章:

r - 循环遍历向量的向量

python - 嵌套 FOR 循环索引问题 - Python

java - 从 Informix 批量导入到 Oracle

java - 从 Java Derby 数据库中选择特定记录

java - 打开 EnumSet

java - 如何解析可能具有两个分隔符之一的 CSV 文件?

php - 无法使用 while 循环代替 foreach 循环进行分页 php mysql

java - 需要很多帮助来制作方形类(class)

php - 循环更改时间增量,不能被 60 整除时结转到下一个小时

c# - For-each 循环变量