quindi questo è uno strano, so che il codice stesso è abbastanza inutile, ma quello che mi chiedo il motivo per cui ho l'errore:Dichiarazione di una variabile locale inutile
stavo scrivendo del codice, avevo scritto questo :
if(scan.hasNextInt())
int row = scan.nextInt();
non stava pensando a portata variabile, al momento, ovviamente questo è inutile perché non posso usare row
oltre la if
comunque. Quello che non capisco è il motivo per cui ho ottenuto l'errore che ho fatto:
> 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();
^
Ora, se ho solo modifico che se assegno a:
if(scan.hasNextInt()) {
int row = scan.nextInt();
}
Si compilerà bene. Ho avuto l'impressione che se ci fosse 1 riga sotto lo if
le parentesi graffe fossero facoltative ... chiaramente ci sono anche altre considerazioni o entrambe o sarebbero compilate o fallite.
Qualcuno potrebbe spiegarmi o indicarmi un documento che spieghi perché non è possibile dichiarare una variabile locale con il condizionale if
senza parentesi graffe?
EDIT: Ecco la funzione completa:
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';
}
ciò che viene prima e dopo che 'se'? –
Scrivi qui il tuo codice completo –
@NikolayKuznetsov - Vedi modifica. – Mike