在做以下练习时,做到其中一步:键盘录入数据(数据有二,一为String类的姓名,二为int类的年龄)5次,先给姓名后给年龄,第一次给完年龄后进行第二次录入时,给姓名的时候如果不用↓键进行输入就输入不了数据了,我查过解决方案,说可以创建两个键盘录入对象,但我用了也一样,这是为什么...?求解
第二种方案是都用String类接收,但对我这练习很麻烦就没去用了..就想知道为什么第一种方案用了还是不行。
-------------------------------------------------------------------------------------------------------------------------
package homework;
import java.util.Scanner;
/*
练习:
我有5个学生,请把这个5个学生的信息存储到数组中,并遍历数组,获取得到每一个学生信息。
学生:Student
成员变量:name,age
构造方法:无参,带参
成员方法:getXxx()/setXxx()
*/
public class Test1 {
/**
* @param args
*/
public static void main(String[] args) {
// 创建学生对象
Student st = new Student();
// 创建学生数组用于储存学生信息(用String类数组,年龄int可转为String类型)
String[][] studentarr = new String[5][2];
for (int i = 0; i < studentarr.length; i++) {
System.out.println("第"+(i+1)+"个学生");
// 键盘录入学生信息(姓名、年龄)
Scanner sc = new Scanner(System.in);
Scanner sc2 = new Scanner(System.in);
System.out.println("请输入学生姓名:");
String name = sc.nextLine();
st.setName(name);
System.out.println("请输入学生年龄:");
int age = sc2.nextInt();
st.setAge(age);
studentarr[i][0] = st.getName();
studentarr[i][1] = String.valueOf(st.getAge());
}
// 输出学生信息
for (int m = 0; m < studentarr.length; m++) {
for (int n = 0; n < studentarr[m].length; n++) {
if (n == 1) {
System.out.println(",年龄:" + studentarr[m][n] + "岁");
} else {
System.out.print("学生:" + studentarr[m][n]);
}
}
}
}
}
-------------------------------------------------------------------------------------------------------------------------
效果如图
