这是一个有点奇怪的问题,我知道这段代码本身没什么用,但我想知道为什么会出现错误:
我在写一些代码,我写了这个:
if(scan.hasNextInt())
int row = scan.nextInt();
当时没有考虑变量作用域,显然这是无用的,因为我无法在 if
之后使用 row
。但我不明白为什么会出现我收到的错误:
> 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检查:
if(scan.hasNextInt()) {
int row = scan.nextInt();
}
它将编译通过。我曾以为如果在 if
下面只有一行,花括号是可选的... 很明显还有其他考虑因素,否则两者都会编译或失败。
有人能解释一下,或者给我指点一个文件,解释为什么我不能在没有花括号的情况下在 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';
}