我有一个简单的问题,我正在制作一个在线游戏(在迁移到 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()”。如何在不输入任何内容的情况下关闭它?