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.