簡単な質問があります。オンラインゲームを作成しています(GUIに移動する前に基本を理解します)。たとえば、ユーザーがコンソールに「q」を入力すると、プログラムは終了します(かなり終了します)。しかし、コードのどこかでエラーが発生した場合(つまり、サーバーが見つからない場合)、すべての接続/試行された接続を閉じます。スキャナーオブジェクトも閉じたいのですが、スキャナーオブジェクトは「.next()」メソッドを保持しています。「.close()」や「.reset()」などを呼び出してみましたが、スキャナーオブジェクトが停止することはありません。プログラムを完全に閉じることができるように、スキャナーオブジェクトを停止するにはどうすればよいですか?
-ダン
public void commands(){
char[] charArray;
while(running){
String input = scanCommands.next();
if(input.length() > 1){
command = 'x';
}else{
charArray = input.toCharArray();
command = charArray[0];
}
switch(command){
case 'h':
System.out.println("Server Commands: ");
System.out.println("Command: Function:");
System.out.println(" q - to exit the server.");
System.out.println("done.");
break;
case 'q':
System.out.println("Quiting...");
quite();
System.out.println("done.");
return;
default:
System.out.println("Invalid server command");
break;
}
}
}
//the quite method is the one that I call and should close everything, including the
//scanner object.
public void quite(){
running = false;
try{
IS.close();
OS.close();
send.close();
recieve.close();
}catch(Exception e){
IS = null;
OS = null;
send = null;
recieve = null;
}
String[] nullNames = new String[7];
name.setArray(nullNames);
}
更新:かなりのメソッドに「.close()」が含まれていましたが、機能しませんでした。もう一度試してデバッグモードモードに入ると、「。close()」が保持されます。「q」などを入力すると、コードが続行され、「。close()」が実行されます。何も入力せずに閉じるにはどうすればよいですか?