gpt4 book ai didi

Java控制台输入长度限制

转载 作者:行者123 更新时间:2023-12-02 09:03:18 25 4
gpt4 key购买 nike

我有一个面试任务,其中给了我一个 file.in 格式的文本文件,该任务说我的程序应该使用标准数据输入和输出(我假设控制台)。输入文件如下所示:

249089
439506849 989399339
773359725 989399094
33290819 989399230
771114928 989399164
823133180 989399164
615096154 989399094
340750872 989399164
41881535 989399230
637599407 989399339
510268939 989399506
46219619 989399544
221332387 989399659
236968778 989399824
902942034 989399945
936095694 989400101
**end to the line 249090**

第一个数字是对象的数量第二个是两个数字,但出于任务的目的,我只使用第二个

为了解析我使用的 for 循环和下面的代码的数字:

try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)))
String line = bufferedReader.readLine();
System.out.println(line);
StringTokenizer stringTokenizer = new StringTokenizer(line, " ");//
stringTokenizer.nextToken();
int height = Integer.parseInt(stringTokenizer.nextToken());

我在控制台中使用 IntelliJ 构建,当我粘贴到控制台时,我从末尾开始得到了几千个结果,因此第一个数字是错误的,当我运行程序时,我收到运行时错误:

Exception in thread "main" java.lang.NumberFormatException: For input string: "84 995058150"
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68)
at java.base/java.lang.Integer.parseInt(Integer.java:658)
at java.base/java.lang.Integer.parseInt(Integer.java:776)
at pl.artur.Main.getNumberOfBuildings(Main.java:23)
at pl.artur.Main.main(Main.java:14)

有没有办法使用标准输入来解决这个问题?

最佳答案

这与输入来自哪里无关;如堆栈跟踪所示,异常是由字符串 "84 995058150" 上的 Integer.parseInt 方法引发的。该字符串显然不代表(单数)整数。如果 StringTokenizer.nextToken 方法返回此字符串,则问题出在 StringTokenizer 上。正如 David Conrad 在评论中指出的那样,documentation说:

StringTokenizer is a legacy class that is retained for compatibility reasons although its use is discouraged in new code. It is recommended that anyone seeking this functionality use the split method of String or the java.util.regex package instead.

String.split 方法会将 line 分成两部分,因此您可以在所需的部分上调用 Integer.parseInt :

String line = bufferedReader.readLine();
String[] parts = line.split(" ");
int height = Integer.parseInt(parts[1]);

关于Java控制台输入长度限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60012859/

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