Методы hasNext() и Next()
Задача:
На вход подаётся последовательность слов. Посчитайте общее количество введённых слов. Примечание. Так как маркер конца последовательности в этой задаче отсутствует, будет удобно воспользоваться методом
hasNext()."
Моё решение:
import java.util.Scanner;
class MyStudy {
public static void main (String[] args) {
Scanner sc = new Scanner(System.in);
int a = 0; //счетчик слов
while (sc.hasNext()) {
a++;
}
System.out.println(a);
}
}
В гугле гуглил=) Не могу понять, как остановить hasNext()? Получается бесконечный цикл.
Ответы (3 шт):
Пишу в IntelliJ IDEA, не выдает счетчик слов.
Проблема тут не столько в hasNext (хотя, чтобы hasNext работал, нужна ещё ему в пару sc.next(), sc.nextLine() и подобный метод, который будет считывать данные), сколько в том, где происходит исполнение программы.
System.in - используется для работы с консолью, для получения ввода с консоли.
В IDEA, понятно, консоли нет (во всяком случае в intellij idea я не припомню). Поэтому он и не может ничего считать. Если на вход в IDEA подать строку new Scanner("123 4 555"); то будет работать и в самой IDE
Тебе нужно считать 1 строку из консольного буфера и закрыть его. Для удобного использования методов сканера передай считанную строку в новый сканер и дальше используй его
Scanner scanner = new Scanner(System.in);
String line = scanner.nextLine();
scanner.close();
Scanner scanner1 = new Scanner(line);
String codeMessage = "";
String result = "";
while (scanner1.hasNext()){}
public static void main(String[] args) {
//Передаем в обьект класса Scanner строку "..."
Scanner sc=new Scanner("и цикл выполняется. А если ничего не ввели, то");
int a = 0;
while (sc.hasNext()){ //Пока есть что считывать
String c=sc.next(); // с присвоить слово
a++; // счетчик
}
System.out.println(a); //вывод счетчика в консоль
}