扫描仪未到达最后一行

Scanner doesn't reach the last line

提问人:ngngng 提问时间:10/8/2023 最后编辑:ngngng 更新时间:10/8/2023 访问量:74

问:

我有以下代码:

Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for (int i = 0; i < n; i++) {
    int k = sc.nextInt();
    String s = sc.next();

我得到像“2 0101010”这样的字符串作为输入,我想保存到变量和字符串,但扫描仪没有到达最后一行。我该如何解决?n2k0101010s

java.util.scanner

评论

0赞 Tim Moore 10/8/2023
它将把 2 读入 、 0101010 读入 ,然后等待其他输入读入nks
0赞 ngngng 10/8/2023
我的意思是首先将其写为输入并且它可以工作,但问题是扫描仪不会读取输入的最后一行n
2赞 Arfur Narf 10/8/2023
您的书面代码有效(我在输入“1(换行符)2 010101010(换行符)”上运行了它)。“n、k、s”按预期读取。我在分配到“s”后添加了一个打印调用。“没到最后一行”是什么意思
0赞 Arfur Narf 10/8/2023
@notAPPP - 意思很清楚。我也不是 Scanner 的粉丝,但很清楚它应该做什么(按顺序读取 3 个单独的令牌)并且它做到了。
1赞 Hovercraft Full Of Eels 10/8/2023
请发布最小可重复的示例代码。

答:

0赞 Reilas 10/8/2023 #1

"...我得到 n 个字符串,例如“2 0101010”作为输入,我想将 2 保存到变量 k 并将 0101010 保存到字符串 s,但扫描仪没有到达最后一行。我该如何解决?..."

代码似乎工作正常。

下面是一个类似的实现。

Scanner in = new Scanner(System.in);
int n = in.nextInt(), k;
String s;
while (n-- > 0) {
    k = in.nextInt();
    s = in.next();
}
0赞 VRashi 10/8/2023 #2

在代码中,sc 是 scanner 对象,第一个 int 值存储到变量 N 中,如果是 int,则传递的第二个值存储到变量 K 中,您必须再传递一个值给 s。

评论

0赞 Community 10/11/2023
正如目前所写的那样,你的答案尚不清楚。请编辑以添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。您可以在帮助中心找到有关如何写出好答案的更多信息。
0赞 Drachios 10/8/2023 #3

“我得到 n 个字符串,例如”2 0101010“,正如您所说,我假设您得到了 n 个字符串,其中单个字符串的形式为”2 0101010”。

在这种情况下,如果我是你,我会将整个 String 作为输入,然后对它执行字符串操作,然后将它们存储到 k 和 s 中。您可以使用 charAt 和子字符串来实现此目的。希望这有帮助!

评论

0赞 Community 10/10/2023
正如目前所写的那样,你的答案尚不清楚。请编辑以添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。您可以在帮助中心找到有关如何写出好答案的更多信息。