Итак, это странно, я знаю, что сам код довольно бесполезен, но мне интересно, почему я получаю ошибку:
Я писал код, я написал это:
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
без фигурных скобок?
EDIT: Здесь полная функция:
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';
}