#java
#java
Вопрос:
Я делаю школьное упражнение и не могу понять, как сделать что-то одно. Для того, что я прочитал, Scanner — не лучший способ, но поскольку учитель использует только Scanner, это должно быть сделано с помощью Scanner.
В этом проблема. Пользователь вводит текст в массив. Этот массив может содержать до 10 строк, а вводимые пользователем данные заканчиваются пустой строкой.
Я сделал это:
String[] text = new String[11]
Scanner sc = new Scanner(System.in);
int i = 0;
System.out.println("Please insert text:");
while (!sc.nextLine().equals("")){
text[i] = sc.nextLine();
i ;
}
Но это не работает должным образом, и я не могу понять это.
В идеале, если пользователь вводит:
This is line one
This is line two
и теперь нажмите enter, при печати массива он должен дать:
[This is line one, This is line two, null,null,null,null,null,null,null,null,null]
Вы можете мне помочь?
Ответ №1:
while (!sc.nextLine().equals("")){
text[i] = sc.nextLine();
i ;
}
Это считывает две строки из вашего ввода: одну, которую он сравнивает с пустой строкой, затем другую, чтобы фактически сохранить в массиве. Вы хотите поместить строку в переменную, чтобы вы проверяли и имели дело с одним и тем же String
в обоих случаях:
while(true) {
String nextLine = sc.nextLine();
if ( nextLine.equals("") ) {
break;
}
text[i] = nextLine;
i ;
}
Комментарии:
1. Не забывайте о максимальном вводе 10 строк в вашем while break.
Ответ №2:
Вот типичная идиома readline, применяемая к вашему коду:
String[] text = new String[11]
Scanner sc = new Scanner(System.in);
int i = 0;
String line;
System.out.println("Please insert text:");
while (!(line = sc.nextLine()).equals("")){
text[i] = line;
i ;
}
Ответ №3:
Приведенный ниже код автоматически остановится, когда вы попытаетесь ввести более 10 строк без запроса OutBoundException.
String[] text = new String[10]
Scanner sc = new Scanner(System.in);
for (int i = 0; i < 10; i ){ //continous until 10 strings have been input.
System.out.println("Please insert text:");
string s = sc.nextLine();
if (s.equals("")) break; //if input is a empty line, stop it
text[i] = s;
}