Как мне поставить этикетку - PullRequest
0 голосов
/ 07 июля 2019

Я не могу понять, где я должен поставить метку 'one' в коде (мне нужно пропустить бесконечный цикл while)

one:
while (true) {
    x = JOptionPane.showInputDialog(null, "Insert a data");
    y = y + Integer.parseInt(x);

    if (x == "ok") {
    break one;
    }
}

//here is where i need to get using the label
System.out.println("I did break");

Может кто-нибудь объяснить мне, где я должен поставить этикетку?

Ответы [ 3 ]

0 голосов
/ 07 июля 2019

Я думаю, что этикетка уже в нужном месте.

Согласно Oracle Java Tutorial :

Оператор break завершает помеченный оператор; Это не перенести поток управления на этикетку. Поток управления передается к заявлению, следующему сразу за помеченным (прекращено) заявление.

В вашем примере вам даже не нужна метка, потому что ваш оператор break все равно выйдет из цикла while(true). Обычно вы используете метки, когда у вас есть вложенные циклы.

0 голосов
/ 07 июля 2019

Хорошо, я действительно нашел ответ сам: Ошибка состоит в том, что при попытке присвоить y значение типа int, если он получает строку ('ok'), он завершается с ошибкой. Поэтому мне просто нужно было переместить эту строку после последовательности if (и использовать метод equals), и теперь она работает.

one:
while (true) {
    x = JOptionPane.showInputDialog(null, "Insert a data");

    if (x.equals("ok")) {
    break one;
    }

    y = y + Integer.parseInt(x);
}

//here is where i need to get using the label
System.out.println("I did break");
0 голосов
/ 07 июля 2019

Вы можете использовать цикл do while.

do{
 x =JOptionPane.showInputDialog(null, "Insert a data");
y = y + Integer.parseInt(x);
}while(!(x.equals("ok")));

//here is where i need to get using the label
System.out.println("I did break");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...