我有一个关于Java的Scanner的问题。 我正在编写一个井字棋程序,每当玩家应该进行移动时都会调用此函数。
public void mossa(){
int riga, colonna;
int errore;
Scanner input = new Scanner(System.in);
if(player=='O')
System.out.println("GIOCATORE O\n");
else
System.out.println("GIOCATORE X\n");
do{
errore = 0;
System.out.println("Riga: ");
riga = input.nextInt();
System.out.println("Colonna: ");
colonna = input.nextInt();
if(board[riga][colonna]!=' '){
errore=1;
System.out.println("Hai scelto una casella gia occupata!\n");
}
if(riga>3 || colonna>3 || riga<0 ||colonna<0){
errore=1;
System.out.println("Hai scelto una casella che non esiste!\n");
}
}while(errore==1);
//----->input.close();<------
if(player == 'X')
board[riga][colonna] = 'X';
else
board[riga][colonna] = 'O';
togglePlayer();
}
起初我认为在捕获玩家的移动后关闭Scanner,然后在再次调用函数时重新打开它会更好(请参见注释的input.close())。问题是,如果我关闭Scanner,就会出现运行时错误,提示Scanner为空,并且将nextInt()放在由hasNextInt()驱动的if中也无济于事。所以,不关闭输入Scanner是否有错(我只有资源泄漏的警告)?
提前感谢您。
Scanner
。 - Florent Bayle