Я принимаю ввод с помощью java Scanner, написав следующий код:
import java.util.Scanner;
class main{
public static void main(String args[]){
Scanner scan=new Scanner(System.in);
System.out.println("Enter number");
int i=scan.nextInt();
}
}
но выше код выдает следующее исключение:
Enter number
Exception in thread "main" java.util.NoSuchElementException
at java.base/java.util.Scanner.throwFor(Scanner.java:937)
at java.base/java.util.Scanner.next(Scanner.java:1594)
at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
at main.main(main.java:7)
Tool completed with exit code 1
В этом фрагменте кода нет ничего плохого ... можете ли вы опубликовать свой полный код и любые проверенные вами входные данные?
Возможный дубликат Как я могу прочитать ввод с консоли, используя класс Scanner в Java?
Я специально искал это исключение и увидел этот пост, в котором говорится о закрытии предыдущего сканера: stackoverflow.com/questions/13042008/… — применимо ли это в вашем случае? Создали ли вы в том же запуске вашей программы еще один объект Scanner и закрыли его? Этот пост предполагает, что это способ решить проблему, которую вы видите. Если что-то в более раннем коде не приводило среду в забавное состояние, нет никаких причин, по которым код, который вы нам показываете, должен генерировать это исключение.
Как вы запускаете эту программу? В командной строке (какая ОС)? В среде IDE (какой именно)? В какой-то другой среде? Я гуглил, и все, что я вижу, дает какое-то представление о том, что System.in находится в состоянии, когда он не может больше вводить данные, и именно это приводит к этой ошибке. Если это единственный код, который вы выполняете (это происходит в строке 7 вашей программы, так что, возможно, так оно и есть), то это должно быть что-то связанное со средой, в которой вы выполняете код.
[stackoverflow.com/questions/34508824/…stackoverflow.com/questions/34508824/… См. ссылку выше.
сканер не останавливается для ввода. он просто показывает следующую информацию:
Введите номер Exception в потоке "main" java.util.NoSuchElementException в java.base/java.util.Scanner.throwFor(Scanner.java:937) в java.base/java.util.Scanner.next(Scanner.java:1594) ) в java.base/java.util.Scanner.nextInt(Scanner.java:2258) в java.base/java.util.Scanner.nextInt(Scanner.java:2212) в main.main(main.java:7) Инструмент завершен с кодом выхода 1
Я запускаю этот код в Texpad на Windows 7.
Вы действительно имеете в виду, что используете Textpad или просто редактируете его там? Если вы действительно запускаете его оттуда, пробовали ли вы запускать его в обычной командной строке? У вас когда-нибудь сканер работал без этой ошибки? Мне кажется, что это что-то о вашей среде, а не о вашем коде.




Вы почти там. Одно примечание: вы ожидаете значение инт, и если пользователь вводит, например. string, то вы получите исключение.
public static int askIntNumber(Scanner scan) {
while(true) {
try {
System.out.print("Enter number: ");
return scan.nextInt();
} catch (Exception e) {
System.err.println("This is not an integer number");
}
}
import java.util.Scanner;
class Input {
public static void main(String[] args) {
Scanner input = new Scanner(System.in); System.out.print("Enter an integer: ");
int number = input.nextInt();
System.out.println("You entered " + number);
}
}
Попробуйте этот код.....
Здесь создается входной объект класса Scanner. Затем метод nextInt() класса Scanner используется для получения целочисленного ввода от пользователя.
Чтобы получить от пользователя ввод long, float, double и String, вы можете использовать методы nextLong(), nextFloat(), nextDouble() и next() соответственно.
Вы должны попробовать это:
import java.util.Scanner;
public class main {
public static void main(String[]args) {
Scanner sc=new Scanner(System.in);
System.out.println("Enter number: ");
int i=sc.nextInt();
}
}
Блок кода sc.nextInt сканирует весь ввод, а затем запускает его. Это должно решить вашу проблему.
Что вы вводили?