我希望输入学号回车后再输入姓名,但是现在输入不了姓名直接到输入年龄那一行去啦,怎么修改?
public static void addStudent(ArrayList<Student> gg){
Scanner sc = new Scanner(System.in);
System.out.println("请输入学号");
int schoolnumber = sc.nextInt();
System.out.println("请输入姓名");
String name = sc.nextLine();
System.out.println("请输入年龄");
int age = sc.nextInt();
System.out.println("请输入地址");
String address=sc.nextLine();
Student p = new Student(schoolnumber,name,age,address);
}
只能这样手动输出吗?第二个方法是怎么实现的还是不太懂欸。
我记得c语言里面对于这种情况有一个专门的连回车一起输出的调用,Java里面没有类似的吗?
方法一和方法二都是用来跳过你上次输入的回车(换行符)的。
因为nextLine函数会读取一行,如果上次输入留下了一个换行符,就会读取一个空行。
所以,可以:
1.
用sc.nextLine();直接跳过一个空行,再读取一行输入。
2.
用sc.skip("\\s+");跳过接下来的所有连续的空白字符(包括空格、tab、换行等),再读取一行输入。
"\\s+"是正则表达式字符串,\\s表示一个空白字符,+表示一个或多个,整个意思就是表示一个或多个连续的空白字符,skip表示跳过这些字符。关于正则表达式的用法,你可以自己查资料。
c语言跳过回车(换行符)等空白字符的方法和java是类似的,也是通过调用一些函数实现的,只是函数名不同罢了。