的Java Scanner类阅读串
问题描述:
我得到了下面的代码:的Java Scanner类阅读串
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.nextLine();
}
和输出的代码如下:
How many names are you going to save:3
Type a name: Type a name: John Doe
Type a name: John Lennon
注意它跳过了第一个名字项?它跳过它,直接进入第二个名字。我试图寻找是什么原因造成的,但我似乎无法完成。我希望有一个人可以帮助我。谢谢
答
错误的原因是nextInt只拉整数,而不是换行符。如果你在for循环之前添加一个in.nextLine(),它会吃掉空的新行,并允许你输入3个名字。
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];
in.nextLine();
for (int i = 0; i < names.length; i++){
System.out.print("Type a name: ");
names[i] = in.nextLine();
}
或者只是读取该行并将该值解析为整数。
int nnames;
String names[];
System.out.print("How many names are you going to save: ");
Scanner in = new Scanner(System.in);
nnames = Integer.parseInt(in.nextLine().trim());
names = new String[nnames];
for (int i = 0; i < names.length; i++){
System.out.print("Type a name: ");
names[i] = in.nextLine();
}
答
这是因为in.nextInt()没有改变行。所以你首先“输入”(在按3之后)导致循环中的in.nextLine()读取endOfLine。
这里的小改变,你可以做:
int nnames;
String names[];
System.out.print("How many names are you going to save: ");
Scanner in = new Scanner(System.in);
nnames = Integer.parseInt(in.nextLine());
names = new String[nnames];
for (int i = 0; i < names.length; i++){
System.out.print("Type a name: ");
names[i] = in.nextLine();
}
答
这是因为in.nextInt()只接受一个整型数字,没有收到新的生产线。所以你输入3并按下“Enter”,行的结尾由in.nextline()读取。
这里是我的代码:
int nnames;
String names[];
System.out.print("How many names are you going to save: ");
Scanner in = new Scanner(System.in);
nnames = in.nextInt();
in.nextLine();
names = new String[nnames];
for (int i = 0; i < names.length; i++){
System.out.print("Type a name: ");
names[i] = in.nextLine();
}
答
你可以简单地更换
names[i] = in.nextLine();
与names[i] = in.next();
使用next()将只返回一个空间之前会发生什么。 nextLine()在返回当前行后自动向下移动扫描器。
答
use sc.nextLine();两个时间让我们可以读取字符串的最后一行
sc.nextLine() sc.nextLine()
精确(真的,准确)的比赛http://stackoverflow.com/questions/1466008/ Java的扫描仪类阅读串/ – CPerkins 2009-09-23 19:35:49