Как многократно вводить строку, пока пользователь не введет ключевое слово, чтобы остановить цикл в Java

Чтобы получить доступ к элементу управления Forms в коде, вам необходимо присвоить ему имя, используя атрибут x:Name

в XAML:

<ListView HorizontalOptions="Center" x:Name="MyList" />

в коде :

MyList.ItemsSource = myData;
0
задан Kevin Bebla 2 March 2019 в 22:37
поделиться

2 ответа

Несколько проблем с вашим кодом:
(1) Почему вы используете цикл for и выполняете итерацию до s.length() при длине s (что 0 в этот момент) не имеет ничего общего с вашей проблемой?
Вам нужен цикл, который не имеет заранее определенного числа итераций, например while (true), из которого вы выйдете с break. [1114 ]
(2) На каждой итерации вы получаете ввод пользователя и сохраняете его в s, поэтому вы теряете все предыдущие значения.
Вам нужна отдельная переменная для хранения ввода пользователя.
(3) Оператор continue не нужен как последний оператор в цикле.
(4) Поскольку на каждой итерации вы добавляете «not» в конце, после завершения цикла вы должны удалить последнее «not» из s
(5 ) Не используйте == при сравнении строк. Для этого есть метод equals().
Это мое решение:

Scanner sc = new Scanner(System.in);
String s = "";
System.out.print("Please enter some Strings: ");
while (true){
    String input = sc.nextLine();
    if(input.equalsIgnoreCase("stop"))
        break;
    s += input + " not ";
}
if (s.length() >= 5)
    s = s.substring(0, s.length() - 5);
System.out.println(s);
0
ответ дан forpas 2 March 2019 в 22:37
поделиться

Используйте петлю while.

Почему while loop?

Обычно мы должны использовать while циклы всегда, когда мы не знаем, сколько циклов мы сделаем. В этом случае только когда пользователь вводит «stop».

Итак, вам нужно поле String для хранения слов пользователя. Также мы можем использовать числовое поле, чтобы отследить, является ли первое или второе слово, подумав, добавив слово «не».

Затем посмотрите на этот пример:

Scanner s = new Scanner(System.in);
String currentAnswer = "";
String userWords = "";
int tracker = 0;

while (!currentAnswer.equals("stop")){
     currentAnswer = s.nextLine();
     userWords += currentAnswer + " ";

     if (tracker % 2 != 0) {
         userWords += "not ";
     }

     tracker++;
}

System.put.println(userWords);

Это можно сделать и с помощью цикла for, но я действительно рекомендую цикл while для этого случая.

РЕДАКТИРОВАТЬ: Как вы видели, я использовал equals() вместо ==, чтобы сравнить две строки, потому что мы хотим проверить его значение, а не равенство объектов.

Когда мы используем оператор ==, мы пытаемся проверить, нацелены ли два объекта на один и тот же адрес памяти, но нам нужно только узнать, имеют ли две строки одно и то же значение.

Для этого случая справедливо знать, что мы можем сравнить его, используя другие способы, такие как Objects.equals() или даже contentEquals().

Проверьте это обсуждение , чтобы узнать больше о сравнении строк.

0
ответ дан Lucas Sousa 2 March 2019 в 22:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: