Mik*_*ike 15 java scope if-statement declaration local-variables
所以这是一个奇怪的,我知道代码本身是相当无用的,但我想知道为什么我得到错误:
我写了一些代码,我写了这个:
if(scan.hasNextInt())
int row = scan.nextInt();
Run Code Online (Sandbox Code Playgroud)
当时没有考虑变量范围,显然这是无用的,因为无论如何我都不能使用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();
^
Run Code Online (Sandbox Code Playgroud)
现在,如果我只是修改它,如果检查:
if(scan.hasNextInt()) {
int row = scan.nextInt();
}
Run Code Online (Sandbox Code Playgroud)
它会编译好.我的印象是,如果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';
}
Run Code Online (Sandbox Code Playgroud)
Pet*_*rey 26
如果你有if,for,while,do/while你必须用一个声明遵循它.声明不是声明.
IfThenStatement:
if ( Expression ) Statement
IfThenElseStatement:
if ( Expression ) StatementNoShortIf else Statement
IfThenElseStatementNoShortIf:
if ( Expression ) StatementNoShortIf else StatementNoShortIf
Run Code Online (Sandbox Code Playgroud)
我假设他们这样做是因为你声明的任何变量都不能被使用,因为它会立即超出范围(除了相同的声明)
| 归档时间: |
|
| 查看次数: |
407 次 |
| 最近记录: |