import java.util.Scanner;
public class Student {
public static void main(String[] args)
{
int i,j;
Scanner input = new Scanner(System.in);
System.out.print("please enter the number of students:");
int number = input.nextInt();
String name[] = new String[number];//学生姓名数组
System.out.print("please enter their name:");
for(i=0;i<number;i++){
name[i] = input.nextLine();
}
for(j=0;j<number;j++){
System.out.println("as follows:"+name[j]);
}
}
}
运行后,输入数字2,但输入一次名字后程序就输出结果了,为啥
http://blog.sina.com.cn/s/blog_6aa93fde01016vqr.html
把input.nextLine()改成input.next()。
楼上正解,
当使用nextLine()方法时会读取该行剩余的所有的内容,包括换行符,然后把焦点移动到下一行的开头。所以这样就无法接收到下一行输入的String类型的变量。
而next()方法是以换行或者空格符为分界线接收下一个String类型变量。
例如:
int n = ScannerObjext.nextInt()
String s1 = ScannerObjext.nextLine();
String s2 = ScannerObjext.nextLine();
假设输入:
42
and don't you
forget it
在这种情况下,n的值为42,s1设置为空白字符,s2设置为and don't you
因为nextInt()读入42,但并没有读入"\n",因此S1调用42所在行的剩余部分
结合不同的方法从键盘读取字符输入时,有时不得不包含一条额外的nextLine()调用,以去除行的结束符。