Как можно использовать Scanner и передавать в него строку?

Я в Scanner передаю строку, и получаю части из этой строки, но потом применив sc.close(); почему то Scanner не сбрасывается в начало строки,в чём дело? splin применять не нужно.
public static void main(String[] args) {
		
		StringBuilder strBuilder = new StringBuilder();
		String str = "My name is yndrew. I'm from Yelarus";
		Scanner sc = new Scanner(str);
		
		String minWord = null;
		int minLenght = 0;
		
		if(sc.hasNext()) {
			minWord = sc.next();
			minLenght = minWord.length();
		}
		
		while(sc.hasNext()) {
			String word = sc.next();
			
			//определяю самое короткое слово
			if(word.length()< minLenght) { 
				minLenght = word.length();
				minWord = word;
			}
		}
			
		//после я имею самое короткое слово minWord
		//и размер этого короткого слова minLenght
		
		char chEnd = minWord.charAt(minLenght - 1);
		System.out.println("Последняя буква самого короткого слова: " + chEnd);
		sc.reset();
		if(sc.hasNext()) {
			System.out.println("+!!!");
		}
		
		while(sc.hasNext()) {
			System.out.println("+");
			String n = sc.next();
			char value = n.charAt(0);
			if(value == chEnd) {
				strBuilder.append(n + " ");
			}
		}
		System.out.println(strBuilder);
	}
  • Вопрос задан
  • 564 просмотра
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
Метод close() просто закрывает источник данных сканера, если тот поддерживает операцию закрытия. В случае со строкой он не делает ничего. Метод reset() сбрасывает настройки сканера, но не влияет на состояние источника данных. Так что вы не сможете переиспользовать сканер, придётся создать новый.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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