所以这是一个奇怪的,我知道代码本身是相当无用的,但我想知道为什么我得到错误:
我正在写一些代码,我写了这个:
if(scan.hasNextInt())
int row = scan.nextInt();
当时没有考虑变量范围,显然这是没用的,因为无论如何我都不能使用row
过去。if
我不明白为什么我得到了我所做的错误:
> javac hw.java
hw.java:25: '.class' expected
int row = scan.nextInt();
^
hw.java:25: not a statement
int row = scan.nextInt();
^
hw.java:25: illegal start of expression
int row = scan.nextInt();
^
hw.java:25: ';' expected
int row = scan.nextInt();
^
现在,如果我只是将其修改为:
if(scan.hasNextInt()) {
int row = scan.nextInt();
}
它会编译得很好。我的印象是,如果if
大括号下有 1 行是可选的......显然还有其他考虑因素,或者两者都会编译或失败。
有人可以向我解释一下,或者将我指向一个解释为什么我不能在if
没有大括号的条件下声明局部变量的文档吗?
编辑:这是完整的功能:
public static char getinput() {
System.out.println("Where do you want to go? (row column)");
Scanner scan = new Scanner(System.in);
if(scan.hasNextInt())
int row = scan.nextInt();
String input = scan.next();
System.out.println(input);
return 'a';
}