Scanner类概述:
Scanner类是是用来接收控制台输入的字符串以及基本数据类型的类。
常用方法:
1.int nextInt():
接收输入的int型的数据。
结束符为空格或者回车
2.String nextLine()
接收输入的是字符串的数据
结束符为回车
3.String next():
接收输入的字符串的数据
结束符为回车
import java.util.Scanner;
public class Test3 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("请输入的数字");
int scan=scanner.nextInt();
System.out.println("请输入姓名");
String name=scanner.nextLine();
System.out.println(scan);
System.out.println(name);
}
}
笔者在参加美团笔试的时候 碰到了 输入样例为
不等长的数组
4 //表示接下来的四行输入
1 2
1 2 3 4
1 2 3 4 5
1 2
需要nextInt()和nextLine()混用 来读入数组
但是发现
用nextInt()读取第一行输入,执行到用nextLine()读取第二行的输入时,就直接结束了nextLine的输入。
这个是为什么?
通过测试发现,只要nextInt,next,nextdouble方法在nextLine前面时,就会跳过nextline的输入。
原因:
nextInt()是以换行符或者回车结束的,表示输入结束。(我们结束这个输入时,都会按回车键)
而换行符 ” /n“,回车符 也是一个字符.nextLine()会把前者的换行符或者回车一个字符输入,
所以nextLine不是没有录入值,而是直接把换行符或者回车符录入,直接结束输入,所以nextLine不需要再从控制台中录入。
解决办法:
1.创建两个Scanner对象,两个对象使用两个不同的方法。
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
Scanner scanner2=new Scanner(System.in);
System.out.println("请输入的数字");
int sca=scanner.nextInt();
System.out.println("请输入姓名");
String name=scanner2.nextLine();
2.把nextLine()放在nextInt()前面
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("请输入姓名");
String name=scanner.nextLine();
System.out.println("请输入的数字");
int sca=scanner.nextInt();