java 问题 java next 遇到的问题

发布网友 发布时间:2022-04-23 01:48

我来回答

3个回答

热心网友 时间:2023-09-19 11:35

int n = in.nextInt();
String s = in.nextLine();
String b = in.nextLine();

in.nextInt()是读取下一个整型,它以空白符(空格、tab、回车、换行等)来区分连续输入。比如你输入"12 345 你好", 第一个in.nextInt()会取走12,把" 345 你好"留在缓存区,如果在此执行in.nextInt()会再取走345……

我想你运行代码时肯定输入肯定是这样的

3
abc ccc ddd
ccc // 然后ccc还没来得及输入程序就执行了

这样n的读取是没问题的,但是n读取完后缓存区会剩下"\r\n"(\r\n是回车换行,就是你敲击回车键的键入)。此时in.nextLine();会立即工作,它是去读缓存区的字符串直到遇到"\r\n",这次是一读就遇到了"\r\n",所以读取结果是空字符串""(不是null)。然后下一个in.nextLine();开始工作,由于此时缓存区没有数据了,所以等待你的输入,当你输入完后获取字符串,over。所以以上输入的结果是这样的:

int n = in.nextInt(); // n = 3
String s = in.nextLine(); // s = ""
String b = in.nextLine(); // b = "abc ccc ddd"

要避免这个问题只需要在in.nextInt();后面加一个in.nextLine();就行了

int n = in.nextInt();
in.nextLine(); // 清理缓存区
String s = in.nextLine();
String b = in.nextLine();

关于你的代码有两点建议

n如果不是业务必需的话不建议手动输入,直接取数组 a 的长度更好 a.length,这样可以避免数组下标越界。

Scanner使用完后建议关闭,in.close();

热心网友 时间:2023-09-19 11:35

那就是你的Java最大内存问题(mod数超过50需要把内存调到2048)

热心网友 时间:2023-09-19 11:36

完整代码发出来追问已发

追答你这个代码要实现的功能是什么,问题我觉得有点对不上代码,你告诉我一下你这个代码目的,我帮你打一下,我这里只有你重复定义数组a的错误,你把你的程序目的告诉我,我帮你编一下。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com