これは奇妙なものです。コード自体はかなり役に立たないことはわかっていますが、なぜエラーが発生するのか疑問に思っています:
私はいくつかのコードを書いていました、私はこれを書きました:
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();
}
それはうまくコンパイルされます。中かっこの下に 1 行ある場合、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';
}