Java基础语法(二、数据输入,Scanner的简单使用)
数据输入
我们可以通过Scanner类来获取用户输入的信息,使用步骤如下:
格式:
1、导包,Scanner类在Java.util包下,所以需要将该类导入,导包的语句需要定义在类的上面。
import java.util.Scanner;
2、创建Scanner对象
Scanner sc = new Scanner(System.in);//sc为变量名
3、接收数据
int i = sc.nextInt();//从键盘接收一个int类型的数据返回
Scanner类的几种简单的常用方法:
用法 | 返回值类型 | 说明 |
---|---|---|
next() | String | 查找并返回来自扫描器的下一个完整标记(忽略有效字符之前的Tab、Enter等符号,只有输入有效字符之后才能使用分隔符或者结束符) |
nextLine() | String | 返回Enter键之前的所有字符,就是获取整行信息(可以得到带空格的字符串) |
nextBoolean() | boolean | 扫描解释为一个布尔值的输入标记并返回该值 |
nextByte() | byte | 将输入信息的下一个标记扫描为一个byte |
nextDouble() | double | 将输入信息的下一个标记扫描为一个double |
nextFloat() | float | 将输入信息的下一个标记扫描为一个float |
nextInt() | int | 将输入信息的下一个标记扫描为一个int |
nextLong() | long | 将输入信息的下一个标记扫描为一个long |
nextShort() | short | 将输入信息的下一个标记扫描为一个short |
扫描器Scanner:Scanner类获取用户输入时,控制台会一直等待用户输入信息,直到用户输入回车结束,之后把所输入的内容传给Scanner,程序要从Scanner中获取用户输入的信息内容,只需要调用Scanner的next**的方法即可。
nextLine() 与 next() 的区别:
- nextline():以回车作为换行标志,获取整行信息
- next():以一个或多个空格作为分段标志,也可以以回车作为分段标志 ,
实例:
import java.util.Scanner;
public class Test1(
public static void main(String[]args){
Scanner input = new Scanner(System.in);
int x = input.nextInt();
System.out.println("你输入的整数为:"+x);
}
)
nextLine使用中的小问题:
import java.util.Scanner;
public class Test{
public static void main(String[]args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个字符串:");
String str = sc.next();
System.out.println(str);
System.out.println("请输入第二个字符串:");
String str2 = sc.nextLine();
System.out.println(str2);
}
}
运行程序时会发现输入第一次后程序直接结束了
- 原因:
- 在nextLine()前有next()、nextInt()等方法时,nextLIne()会把前者的结束符、换行符当作字符串读入,nextLine()遇到Enter时就会结束,从而没有输入字符串就直接结束了。
- 解决方法:
- 在使用next()方法之后添加一个无用的nextLine方法过滤掉next()中的结束符
- 使用next()就不会有这种情况,next()会忽略有效字符前的所有换行符、结束符。