gpt4 book ai didi

Java在扫描仪中,输入不匹配异常

转载 作者:太空宇宙 更新时间:2023-11-04 09:04:19 25 4
gpt4 key购买 nike

我正在 cmd 中开发 java 消息服务(Twitter 风格)。

我有一个消息客户端,我可以在其中捕获用户命令/参数。

例如,第一个参数和命令可以是“login pete”,这样就可以了。

但是,随后输入“open mike”来打开迈克的 channel 会导致输入不匹配异常。

代码

public class MessageClient {
public static void main(String[] args) throws IOException {

/*
* if (args.length != 2) { System.err.println(
* "Usage: java EchoClient <host name> <port number>"); System.exit(1); }
*/

/*
* String hostName = args[0]; int portNumber = Integer.parseInt(args[1]);
*/
String hostName = "localhost";
int portNumber = 12345;

try (
Socket messageSocket = new Socket(hostName, portNumber);
PrintWriter out =
new PrintWriter(messageSocket.getOutputStream(), true);
Scanner in = new Scanner(messageSocket.getInputStream());
BufferedReader stdIn =
new BufferedReader(
new InputStreamReader(System.in))
) {

String userInput;
while ((userInput = stdIn.readLine()) != null) {
out.println(userInput);
// Read number of response lines (and skip newline character).
int n = in.nextInt(); // Input mismatch happens here

in.nextLine();
// Read and print each response line.
for (int i = 0; i < n; i++)
System.out.println(in.nextLine());


}
} catch (UnknownHostException e) {
System.err.println("Don't know about host " + hostName);
System.exit(1);
} catch (IOException e) {
System.err.println("Couldn't get I/O for the connection to " +
hostName);
System.exit(1);
}
finally {
System.exit(1);
}
}
}

最佳答案

替换

int n = in.nextInt(); // Input mismatch happens here
in.nextLine();

int n = Integer.parseInt(in.nextLine());

检查this进行详细讨论。

[更新]

如果您不习惯使用调试器,可以检查 in.nextLine() 捕获的值,如下所示:

String n = in.nextLine();
System.out.println(n);
int n = Integer.parseInt(n);

这会让您知道问题出在哪里。

关于Java在扫描仪中,输入不匹配异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60422062/

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