一、常见的方法
.next():
- 1、一定要读取到有效字符后才可以结束输入。
- 2、对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
- 3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
- next() 不能得到带有空格的字符串。
.nextInt():
这个方法跟next()一直,只是规定了数据类型是Int。
.nextLine():
- 1、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
- 2、可以获得空白。
二、常见的问题
1.next()与.nextLine()的连用:
public class TestNextLine {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的年龄:");
int age = sc.nextInt();
System.out.println("请输入你的姓名:");
String name = sc.next();
System.out.println("请输入你的工资:");
String salary = sc.nextLine();
System.out.println("你的信息如下:");
System.out.println("姓名:"+name+"\n"+"年龄:"+age+"\n"+"工资:"+salary);
}
}
结果如下:
这里就会出现,我们输入的时候,准备输入工资的时候,直接跳过输出,没有让我们进行输入工资~~~!!!而且工资哪项是null.
原因是:
nextLine()会把nextInt(),next(),nextDouble(),nextFloat()的结束换行符作为字符串读入,进而不需要从键盘输入字符串nextLine便已经转向了下一条语句执行。
解决办法:
在每一个nextInt(),next(),nextDouble(),nextFloat()后都加一个nextLine()语句,将被next()去掉的Enter过滤掉。
修改后的代码:
public class TestNextLine {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的年龄:");
int age = sc.nextInt();
System.out.println("请输入你的姓名:");
String name = sc.next();
sc.nextLine();
System.out.println("请输入你的工资:");
String salary = sc.nextLine();
System.out.println("你的信息如下:");
System.out.println("姓名:"+name+"\n"+"年龄:"+age+"\n"+"工资:"+salary);
}
}
结果:成功!
还有一个列子,我们输入12 32,分别用nextInt()与nextLine()去读取,会出现这样的情况:
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
String s1 = sc.nextLine();
System.out.println(i);
System.out.println(s1);
结果:
32前面还有空格,这就是nextLine的神奇,会把next()的空格读取下来!
2.While与.nextLine()的问题
比如:输入下列几组字符串,存入一个数组里。
abc
def
ghi
既然是字符串,那么我们就使用nextLine就好了。写了如下代码:
Scanner sc = new Scanner(System.in);
List<String> list = new ArrayList<>();
while (sc.hasNextLine()){
String s = sc.nextLine();
list.add(s);
}
但是结果如下:
一直让我输入!!!! 一直停不下来。
为了让这个停下来,我们要去判断读取的那个字符串是否为空,如果为空就跳出循环。
代码如下:
Scanner sc = new Scanner(System.in);
List<String> list = new ArrayList<>();
while (sc.hasNextLine()){
String s = sc.nextLine();
if(s.equals("")) break;
list.add(s);
}
结果:
这样就可以跳出循环了!