Java Scanner 类读取字符串[重复]
-
13-09-2019 - |
题
这个问题在这里已经有答案了:
- Java Scanner 类读取字符串 5 个答案
我得到以下代码:
int nnames;
String names[];
System.out.print("How many names are you going to save: ");
Scanner in = new Scanner(System.in);
nnames = in.nextInt();
names = new String[nnames];
for (int i = 0; i < names.length; i++){
System.out.print("Type a name: ");
names[i] = in.next();
}
System.out.println(names[0]);
当我运行此代码时,扫描仪将仅拾取名字而不是姓氏。当尝试输入名称时,它有时会跳过一行,它会显示好像我将名称留空并跳到下一个名称。我不知道是什么原因造成的。
我希望有一个人可以帮助我!
编辑:我尝试过 in.nextLine();它修复了完整的名称,但仍然保留一行,这是输出的示例:
How many names are you going to save: 3
Type a name: Type a name: John Doe
Type a name: John Lennon
解决方案
代替:
in.next();
使用:
in.nextLine();
nextLine()
读取字符直到找到换行符 '\n'
其他提示
扫描仪.next 当遇到分隔符(空格)时停止读取。使用 nextLine
方法代替。
在最初的 nextInt() 之后,您的输入中仍然有一个空换行符。因此,只需在 nextInt() 之后添加一个 nextLine() ,然后进入循环:
...
Scanner in = new Scanner(System.in);
nnames = in.nextInt();
in.nextLine(); // gets rid of the newline after number-of-names
names = new String[nnames];
for (int i = 0; i < names.length; i++){
System.out.print("Type a name: ");
names[i] = in.nextLine();
}
...
尝试使用:
System.out.println()
代替:
System.out.print()
不隶属于 StackOverflow