为什么if语句在循环时发送继续错误

时间:2018-06-06 19:03:03

标签: java while-loop

我的程序一直跳回到我的第二个嵌套while循环,我想要做的是继续我的第三个嵌套while循环。我已尝试继续自己,继续标签“她”,如下所示,并尝试没有继续声明。每次程序跳转到第二个while循环时。

while((line = x.readLine()) != null){
            tekst = line.split("\\s+");
            if(tekst[0].equals(".PUNKT")||tekst[0].equals(".KURVE")
                    ||tekst[0].equals(".FLATE")){
                atrib = new String[100];
                a = 0;
                while(line != null){
                    if(line.equals("..NØH ")){
                        int []N = new int[10000];
                        int []Ø = new int[10000];
                        int []H = new int[10000];
                        line = x.readLine();
                        koord = line.split("\\s+");
                        i = 0;
                        her:while(isInteger(koord[0])){
                            System.out.println(koord[2]);
                            N[i] = Integer.parseInt(koord[0]);
                            Ø[i] = Integer.parseInt(koord[1]);
                            H[i] = Integer.parseInt(koord[2]);
                            i++;
                            line = x.readLine();
                            koord = line.split("\\s+");
                            if (koord[0].equals("..NØH ")){
                                line = x.readLine();
                                koord = line.split("\\s+");
                                continue her;
                            }
                            if(koord[0].equals(".PUNKT")||koord[0].equals(".KURVE")
                                    ||koord[0].equals(".FLATE")){
                                midl = line;
                                break;
                            }
                        }

3 个答案:

答案 0 :(得分:1)

我认为它会回到第三个循环,因为"继续"是的,但条件isInteger(koord[0])肯定是假的,因为如果koord[0].equals("..NØH ")为真,那么koord[0]不是数字,对吗?

答案 1 :(得分:0)

if语句仅在

时出现
if(tekst[0].equals(".PUNKT")||tekst[0].equals(".KURVE")
                ||tekst[0].equals(".FLATE"))

那你怎么用语句

line.equals("..NØH ")

我认为这个程序会停留在while循环

while(line != null)

答案 2 :(得分:0)

看看这三行:

line = x.readLine();
koord = line.split("\\s+");
if (koord[0].equals("..NØH ")){

条件koord[0].equals("..NØH ")永远不会成真。

  • 如果行包含“..NØH”,则koord[0]将为“..NØH”(没有尾随空格!)
  • 如果行包含其他内容,那么koord[0]会有所不同

最内层while循环中的下一个if条件也未满足,因此跳过break语句。

下一个测试是最里面的while循环的条件:

while(isInteger(koord[0]))

由于line是“..NØH”,koord[0]不是整数,所以此循环终止。

这会让你回到中间循环的开头。