Как выловить java util nosuchelementexception
Перейти к содержимому

Как выловить java util nosuchelementexception

  • автор:

java.util.NoSuchElementException при обработке ввода с консоли

из вашей ошибки понятно что ругается на то что вы не ввели необходимое количество строк в консоли.

думаю стоит немного обновить ваш код:

String s = input.readLine(); s = s.replaceAll ("[-_;]", "" ) ); if (s.equalsIgnoreCase ( a1 + b1 + c1 )) < arrStud[i] = "ACC"; >else
 arrStud[i] = (s.equalsIgnoreCase ( a1 + b1 + c1 ) ? "ACC" : "WA"); 

Отслеживать
ответ дан 19 мая 2011 в 19:11
6,252 16 16 серебряных знаков 21 21 бронзовый знак

Совершенно непонятно, что за странную вещь делает этот код.

java.util.NoSuchElementException: No line found 

Совершенно очевидно, что это потому, что количество введённых строк не соответствует числу, которое было в четвёртой строке. Если всё аккуратно вписать, то программа работает.

Ну, если уж на то пошло, то стоит использовать StringBuilder в функции del, а ваша версия ужасающе неэффективна.

Кроме того, ваша программа упадёт в случае, если стандартный ввод будет закрыт раньше времени (раньше, чем будут переданы n строк).

И, тем не менее, было бы лучше, если бы вы лучше конкретизировали свой вопрос.

Как выловить java util nosuchelementexception

Constructs a NoSuchElementException , saving a reference to the error message string s for later retrieval by the getMessage method.

Method Summary

Methods inherited from class java.lang.Throwable

Methods inherited from class java.lang.Object

Constructor Detail

NoSuchElementException
public NoSuchElementException()

Constructs a NoSuchElementException with null as its error message string.

NoSuchElementException

Constructs a NoSuchElementException , saving a reference to the error message string s for later retrieval by the getMessage method.

Java™ Platform
Standard Ed. 8

Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2024, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.

Выбрасывается исключение java.util.NoSuchElementException при закрытии Scanner

При добавлении студентов dataBase.AddStudents(); в методе класса DataBase открывается сканер Scanner scan = new Scanner(System.in) , после чего, он закрывается: scan.close(); . И когда вызывается повторно метод AddStudents(): dataBase.AddStudents(); выбрасывается исключение java.util.NoSuchElementException . Причем, если убрать строчку scan.close(); в классе DataBase, исключение не выбрасывается. Как это связано с закрытием Scanner, и как исправить эту ошибку?

Отслеживать
задан 2 авг 2021 в 23:28
teoretik_eugene teoretik_eugene
59 4 4 бронзовых знака

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Проблема в том, что метод Scanner.close закрывает тот InputStream , который ему передали.

Это значит, что после первого вызова AddStudents вы закрываете System.in , а значит последующие попытки чтения из него приведут к ошибке, что, собственно, и просходит.

В этом случае правильно (и проще всего тоже) не закрывать scanner, так как у вас всегда передается System.in , а этот поток вообще закрывать не имеет смысла.

В некоторых случаях у вас может быть универсальный код со Scanner , то есть такой, который не знает какой именно ему InputStream передается, но он принимает его во владение. Под владением я имею ввиду то, что этот код является ответственным за закрытие переданного InputStream . И так как он не знает, передан ему поток ввода созданный из файла (который можно и должно закрывать) или System.in , то тут возникает проблема.

Ее решают тем, что передают не непосредственно System.in , а заворачивают его в декоратор для InputStream , который игнорирует вызов метода close . В JDK такого нету (по крайней мере до версии 8 точно не было, может сейчас изменилось что-то), но есть в apache commons.

Как выловить java util nosuchelementexception

Constructs a NoSuchElementException , saving a reference to the error message string s for later retrieval by the getMessage method.

Method Summary

Methods declared in class java.lang.Throwable

Methods declared in class java.lang.Object

Constructor Detail

NoSuchElementException
public NoSuchElementException()

Constructs a NoSuchElementException with null as its error message string.

NoSuchElementException

Constructs a NoSuchElementException , saving a reference to the error message string s for later retrieval by the getMessage method.

Report a bug or suggest an enhancement
For further API reference and developer documentation see the Java SE Documentation, which contains more detailed, developer-targeted descriptions with conceptual overviews, definitions of terms, workarounds, and working code examples.
Java is a trademark or registered trademark of Oracle and/or its affiliates in the US and other countries.
Copyright © 1993, 2024, Oracle and/or its affiliates, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
All rights reserved. Use is subject to license terms and the documentation redistribution policy.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *