发布网友 发布时间: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这样n的读取是没问题的,但是n读取完后缓存区会剩下"\r\n"(\r\n是回车换行,就是你敲击回车键的键入)。此时in.nextLine();会立即工作,它是去读缓存区的字符串直到遇到"\r\n",这次是一读就遇到了"\r\n",所以读取结果是空字符串""(不是null)。然后下一个in.nextLine();开始工作,由于此时缓存区没有数据了,所以等待你的输入,当你输入完后获取字符串,over。所以以上输入的结果是这样的:
要避免这个问题只需要在in.nextInt();后面加一个in.nextLine();就行了
int n = in.nextInt();关于你的代码有两点建议
n如果不是业务必需的话不建议手动输入,直接取数组 a 的长度更好 a.length,这样可以避免数组下标越界。
Scanner使用完后建议关闭,in.close();
热心网友 时间:2023-09-19 11:35
那就是你的Java最大内存问题(mod数超过50需要把内存调到2048)
热心网友 时间:2023-09-19 11:36
完整代码发出来追问已发
追答你这个代码要实现的功能是什么,问题我觉得有点对不上代码,你告诉我一下你这个代码目的,我帮你打一下,我这里只有你重复定义数组a的错误,你把你的程序目的告诉我,我帮你编一下。