求助,关于Java的Scanner对象,先输出int类型数据,再输出String类型数据会输入不了

Yamilk_Z 2019-03-08 03:47:14
在做以下练习时,做到其中一步:键盘录入数据(数据有二,一为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]);
}
}
}
}
}

-------------------------------------------------------------------------------------------------------------------------
效果如图
...全文
141 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

51,409

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧