如何在jshell脚本中接受用户输入?

我的

题:

如何在jshell脚本中接受用户输入还是我做错了什么?

注意:不是在寻找如何将参数传递给jshell script

例:

例如脚本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

是的是的

您可以解决此问题,但不能直接使用基于JShell的代码解决。

有这个项目jshell_script_executorhttps : //github.com/kotari4u/jshell_script_executor

您可以下载它,并在其中进行少量修改 JShellScriptExecutor.java

try(JShell jshell = JShell.create()){

// This call will map System.in in your main code
// to System.in inside JShell evaluated code
try(JShell jshell =
  JShell.builder()
    .in(System.in)
    .out(System.out)
    .err(System.err)
    .build()){

和(也)对您的代码进行少量修改(我知道这并非您所要的,我们在这里不使用Scanner):

/* Put this code into file.jshell */
import java.io.*;

InputStreamReader read = new InputStreamReader(System.in);
BufferedReader in = new BufferedReader(read);
int n1;
System.out.print("Enter the number: ");
n1 = Integer.parseInt(in.readLine());

int n2;
System.out.print("Enter the number: ");
n2 = Integer.parseInt(in.readLine());

System.out.println("n1 + n2 = " + (n1 + n2));

您可以运行它:

> javac src/main/java/com/sai/jshell/extension/JShellScriptExecutor.java
> java -cp src/main/java com.sai.jshell.extension.JShellScriptExecutor ./file.jshell
Enter the number: 1
Enter the number: 2
n1 + n2 = 3

好吧...实际上,它也可以与您的代码一起使用-稍作修改:

/* Put this code into file_scanner.java */
import java.util.Scanner;

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));

试一试

> java -cp src/main/java com.sai.jshell.extension.JShellScriptExecutor ./file_scanner.java
Enter number n1: 1
Enter number n2: 2
n1 + n2 = 3

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Python脚本中接受管道输入,然后接受用户提示的输入?

如何在swift和xcode中接受用户输入

如何在while循环中接受用户输入

如何在Golang(fmt.scan)中接受用户输入

我如何在discord.py中接受用户输入

如何在使用Plink执行的bash文件中接受用户输入?

如何在NAV 2016中使用C / AL接受用户输入?

如何在不等待换行的情况下在C中接受用户输入?

如何在 Discord 中创建一个接受用户输入的弹出窗口?

如何使用Java在数组中接受用户输入?

如何从函数内接受用户输入?

Bash:如何正确接受用户输入?

无法在perl中接受用户输入

无法接受用户在 bash 中的输入

在C中接受用户的连续输入

无法在 Dart 中接受用户输入

我如何在python中接受用户的嵌套字典

如何在Pyqt5 Python中打开另一个窗口并接受用户输入

如何在 PowerShell Plus 中创建一组接受用户输入的文件夹

接受用户输入并同时执行python脚本

如何在 main 中调用 my_function 并提示用户在 main 方法中输入;my_function 接受用户输入并以相反的顺序连接(Python 3)

如何在接受用户输入后阻止Python插入新行?

当python中的空格和换行符分隔开来时,如何接受用户输入?

如何接受用户输入并插入到http get请求中?

如何接受用户输入的向量大小?

当Python 3接受用户输入时,如何执行函数?

接受用户输入时如何运行相同功能

如何接受用户输入的常量并使用 writeprocessmemory?

我该如何在C#中设置三种方法来接受用户输入并对输入进行数学运算?