gpt4 book ai didi

java - 执行 .next() 方法时关闭扫描仪对象? java

转载 作者:行者123 更新时间:2023-12-01 04:54:09 25 4
gpt4 key购买 nike

我有一个简单的问题,我正在制作一个在线游戏(在转向 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()”,但它不起作用。我再次尝试并进入 Debug模式,它仅保留在“.close()”上。一旦我输入“q”或任何内容,代码就会继续,并执行“.close()”。如何在不输入任何内容的情况下关闭它?

最佳答案

您没有关闭 Scanner 对象,因为它不在 try block 中。

try{
IS.close();
OS.close();
send.close();
recieve.close();
}

应包括

scanCommands.close();

如果这引发异常,请将其包含在您的问题中。

关于java - 执行 .next() 方法时关闭扫描仪对象? java ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14442477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com