почему, если оператор отправки продолжает ошибаться в то время как цикл - PullRequest
0 голосов
/ 06 июня 2018

Моя программа продолжает возвращаться ко второму вложенному циклу 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 голосов
/ 06 июня 2018

оператор if выполняется только тогда, когда

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

, тогда как вы можете использовать оператор

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

Я думаю, что эта программа застрянет в цикле while

while(line != null)
0 голосов
/ 07 июня 2018

Посмотрите на эти три строки:

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] будет чем-то другим

Следующее условие if во внутреннемцикл также не выполняется, поэтому оператор break пропускается.

Следующим тестом является условие самого внутреннего цикла while:

while(isInteger(koord[0]))

, поскольку line было "..NØH", koord[0] не является целым числом, поэтому этот цикл завершается.

И это возвращает вас к началу среднего цикла while.

0 голосов
/ 06 июня 2018

Я думаю, что он возвращается к третьему циклу, как и предполагалось, для продолжения, но условие isInteger(koord[0]) наверняка будет ложным, потому что если koord[0].equals("..NØH ") верно, то koord[0] не является числовым,право?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...