如何在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
Run Code Online (Sandbox Code Playgroud)
如果我在 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 …Run Code Online (Sandbox Code Playgroud) 2020Enum年 8 月15 日更新:似乎在 6 月 16日添加了支持。R2DBC 提交。
H2DBC 是否支持 PostgreSQL 枚举?我检查了他们的git page但它没有提到任何关于它的内容。如果是这样,如何使用枚举(插入、选择)?
让我们说 PostgreSQL 枚举
CREATE TYPE mood AS ENUM ('UNKNOWN', 'HAPPY', 'SAD', ...);
Run Code Online (Sandbox Code Playgroud)
Java类
@Data
public class Person {
private String name;
private Mood mood;
// ...
enum Mood{ UNKNOWN, HAPPY, SAD, ...}
}
Run Code Online (Sandbox Code Playgroud)
我试过:
// insert
var person = ...;
client.insert()
.table("people")
.using(person)
.then()
.subscribe(System.out::println);
// select
var query = "SELECT * FROM people";
client.execute(query)
.as(Person.class)
.fetch().all() …Run Code Online (Sandbox Code Playgroud) 在for循环中声明变量的优点和缺点是什么?我想改变我的讲师思想,或改变我的思想:讲师强迫我使用:
// Declare variables
int i;
...
for(i = 0; boolen expesion; update) // Note i not declared here
Run Code Online (Sandbox Code Playgroud)
我喜欢做:
for(int i = 0; boolean expesion; update) // Note i is declared here
Run Code Online (Sandbox Code Playgroud)
在考试中,这是我的方式的惩罚点..我试图通过告诉他说服他:
他的答案是:"如果这里有很少的循环,你不需要反复宣布同一个变量".很难与讲师一起争论那么特别是你是一个来自foreng国家的一年级学生.但是int没有占用那么多内存加上java有一个垃圾收集器来清理内存..
所以,请帮助我说服他或我,并提出一个很好的论据.
enums ×1
for-loop ×1
java ×1
java-9 ×1
jshell ×1
postgresql ×1
r2dbc ×1
spring-data ×1
variables ×1