Declarando uma variável local inútil

Então, isso é estranho, eu sei que o código em si é bastante inútil, mas o que eu estou querendo saber porque eu recebo o erro:

Eu estava escrevendo algum código, eu escrevi isso:

if(scan.hasNextInt())
    int row = scan.nextInt();

Não estava pensando em escopo variável no momento, obviamente isso é inútil porque eu não posso usarrow passado oif de qualquer forma. O que eu não entendo é porque recebi o erro que cometi:

> 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();
                  ^

Agora, se eu apenas modificar isso, verifique se:

if(scan.hasNextInt()) {
    int row = scan.nextInt();
}

Ele irá compilar bem. Fiquei com a impressão de que, se houvesse uma linha sob aif as chaves eram opcionais ... claramente há outras considerações também, ou ambas compilariam ou falhariam.

Alguém poderia me explicar ou me indicar um documento que explica por que não posso declarar uma variável local sob oif condicional sem as chaves?

EDITAR: Aqui está a função 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';    
}

questionAnswers(2)

yourAnswerToTheQuestion