Вопрос:
Как принять пользовательский ввод в скрипт jshell? или что я делаю не так?
Примечание. я НЕ ищу как передать аргументы скрипту jshell.
Пример:
Например скрипт hello.java
:
Scanner in = new Scanner(System.in);
System.out.print("Enter number n1: ");
int n1 = in.nextInt();
System.out.print("Enter number n2: ");
int n2 = in.nextInt();
System.out.println("n1 + n2 = "+ (n1 +n2));
/exit
Это работает, если я набираю строку за строкой в jshell, но затем я запускаю jshell hello.java
, но это не так. Выбрасывает java.util.NoSuchElementException
.
Выход, который я получаю:
@myMint ~/Java $ jshell hello.java
Enter number n1: | java.util.NoSuchElementException thrown:
| at Scanner.throwFor (Scanner.java:858)
| at Scanner.next (Scanner.java:1497)
| at Scanner.nextInt (Scanner.java:2161)
| at Scanner.nextInt (Scanner.java:2115)
| at (#3:1)
Enter number n2: | java.util.NoSuchElementException thrown:
| at Scanner.throwFor (Scanner.java:858)
| at Scanner.next (Scanner.java:1497)
| at Scanner.nextInt (Scanner.java:2161)
| at Scanner.nextInt (Scanner.java:2115)
| at (#5:1)
n1 + n2 = 0
Моя система: Linux Mint 18.2(x64), JShell версии 9.0.1
int n1 = in.nextInt();
введенным вами вручную. Другое дело, что произойдет, если вы удалите из скриптов эти Return(enter) и запустите их как одну строку с операторами, разделенными точкой с запятой? Но, что интересно, сравнение скрипта и строки за строкой хорошо, чтобы увидеть разницу здесь и не забытьthrows NoSuchElementException - if input is exhausted
- person Naman   schedule 02.01.2018in.hasNextLine()
check (tnx для его указания) избавит от исключения. Но теперь мне кажется, что мне нужна какая-то пауза (удерживать, пока пользователь не войдет)..?? Второй способ... Я студент (не носитель английского языка) и мало что дало моему мозгу, какого черта я только что прочитал. Я прочитал ваш пост несколько раз, подумал о том, что я только что прочитал, попробовал однострочный скрипт (результаты были такими же), перечитал ваш пост еще раз, подумал еще раз ... и все еще чувствую себя потерянным. Я что-то пропустил? Кстати, спасибо за ваше время. - person my-   schedule 02.01.2018