本帖最后由 jiubaK 于 2016-9-10 22:43 编辑
sc.nextLine();是要遇到行结束符\r\n才结束的。
per.score = sc.nextDouble();
这条语句执行后,行结束符\r\n还在缓冲区,在下次执行
per.name = sc.nextLine();
时,马上就得到行结束符了,所以达不到想要的效果。
可以先执行一次sc.nextLine();来消耗掉那个结束符。
还有下面也有问题,
p = new Person();
p[ i ] = per;
实际上,你在每个p里面都是存的per,虽然你先new Person()存入了,但是马上也覆盖了。
我根据你写的内容修改如下:
[Java] 纯文本查看 复制代码 package com.hui_extend;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Person[] p = new Person[2];
Scanner sc = new Scanner(System.in);
for (int i = 0; i < p.length; i++) {
Person per = new Person();
System.out.println("输入学生的姓名");
per.name = sc.nextLine();
System.out.println("输入学生的年龄");
per.age = sc.nextInt();
System.out.println("输入学生成绩");
per.score = sc.nextDouble();
sc.nextLine();
p[ i ] = per;
}
System.out.println(p[0].name);
}
}
|