Scanner类简介
java.util.Scanner是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入,
首先要导入包 import java.util.Scanner;
Scanner类的用法🍬
使用步骤
导包---创建---使用
- 用于获取用户的输入,使用前需要导入:import java.util.Scanner
使用前需要先实例化一个对象,并且与标准输入流System.in关联
Scanner sc = new.Scanner(System.in);
通过Scanner类的next()与nextLine()方法获取输入的字符串跟数字,在读取前我们一般需要使用hasNext()与hasNextline()判断是否还有输入的数据
调用Scanner类对象sc的方法从输入流中获取你需要的输入
当创建了一个Scanner类对象之后,控制台会一直等待输入,直到敲回车键结束,把所输入的内容传给对象sc,若要获取需要的内容,调用sc的方法即可
属于
IO流的类如果不关闭会一直占用资源,所以在用完后要加上:sc.close();public class Demo02 {public static void main(String[] args) {//System.in从键盘进行输入Scanner sc = new Scanner(System.in);System.out.println("请输入数据");///判断是否输入字符串if(sc.hasNext()){//获取键盘输入的字符串String str = sc.next();System.out.println("输入的字符串是:"+ str);}}//用完要关闭scanner.close();}
常用方法🌼
nextInt()
只读取数值,读取完后\n没有读取并且光标放在本行Scanner sc=new Scanner(System.in);int i = sc.nextInt();
nextDouble()
只读取小数,否则报错
Scanner sc=new Scanner(System.in);Double i = sc.nextDouble();
例
public class Demo03_Scanner {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);//从键盘接收数据int i = 0;float f = 0.0f;System.out.println("请输入整数: ");if (scanner.hasNextInt()) {i = scanner.nextInt();System.out.println("整数数据: " + i);} else {System.out.println("输入的不是整数数据! ");}System.out.println("请输入小数: ");if (scanner.hasNextFloat()) {f = scanner.nextFloat();System.out.println("小数数据: " + f);} else {System.out.println("输入的不是小数数据! ");}scanner.close();}}
同理nextByte()nextFloat(),nextLong(),nextShot(),当某个方法读取的数字超过自身范围,则会报错
next()
- 读到有效数字后才可以结束输出,否则会一直占用资源。一个next只接受一次
- next()会自动去掉有效输入字符之前的空格
- 有效输入字符之后的空格为结束符或分隔符
不能接收空格
例
public class Demo01{public static void main(String[] args) {//创建一个扫描器对象,用于接受键盘数据Scanner scanner = new Scanner(System.in);System.out.println("使用next方式接受:");//判断用户有没有输入字符串if(scanner.hasNext()){//使用next方式接受String str = scanner.next();System.out.println("输出的内容为:"+str);}//凡是输入IO流的类如果不关闭会一直占用资源scanner.close();}}

输出的结果只有hello,因为使用next()接受,而hello后是空格在接world,所以输出的结果是hello,next()是以空格为结束符
nextLine()
- 以回车为结束符
可以接受空格
例
public class Demo02{public static void main(String[] args) {//创建一个扫描器对象,用于接受键盘数据Scanner scanner = new Scanner(System.in);System.out.println("使用nextLine方式接受:");//判断用户有没有输入字符串if(scanner.hasNext()){//使用next方式接受String str = scanner.nextLine();System.out.println("输出的内容为:"+str);}//凡是输入IO流的类如果不关闭会一直占用资源scanner.close();}}

输出的结果只有hello world,因为使用nextLine()接受,nextLine()是以回车键为结束符,会输出回车之前所有的字符
以上可以这样写
public class Demo03 {public static void main(String[] args) {//创建一个扫描器对象,用于接受键盘数据Scanner scanner = new Scanner(System.in);System.out.println("使用nextLine方式接受:");//使用next方式接受String str = scanner.nextLine();System.out.println("输出的内容为:"+str);scanner.close();}}
📝键盘输入2个数求和
public class Demo01 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入第一个数字");int num1 = sc.nextInt();System.out.println("请输入第二个数字");int num2 = sc.nextInt();int result = num1 + num2;System.out.println("两个数字的和:" +result);}}
📝键盘输入3个int数,求最大值
public class Demo03 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入第一个数");int a = sc.nextInt();System.out.println("请输入第二个数");int b = sc.nextInt();System.out.println("请输入第三个数");int c = sc.nextInt();int num1 = a > b ? a : b;int max = num1 > c ? num1 :c;System.out.println("三个数的最大值:"+max);}}
匿名对象
创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量。虽然是创建对象的简化写法,但是应用场景非常有限。
- 匿名对象:
没有变量名的对象
格式:
new 类名(参数列表);eg:new Scanner(System.in);
应用场景:
创建匿名对象直接调用方法,没有变量名
new Scanner(System.in).nextInt();
一旦调用两次方法,就是创建了两个对象,造成浪费
new Scanner(System.in).nextInt();new Scanner(System.in).nextInt();
一个匿名对象,只能使用一次
匿名对象可以作为方法的参数和返回值
做为参数
如何查看底层代码
- 按住command点击关键字,进入类的定义
- 点击structure,查看类所有的方法

Random
- Random类用来生成水机数字
三个步骤
1、导包import java.util.Random;
2、创建Random r = new Random(); 小括号当中留空即可
3、使用
① int num = r.nextInt();,获取一个随机的int数字(范围是int所有返回,有正负2种)
public class Demo01Random {
public static void main(String[] args) {
Random r = new Random();
int num = r.nextInt();
System.out.println("随机数是:"+ num);
}
}
② int num = r.nextInt(3); ,获取一个随机的int数字(参数代表范围,左闭右开区间),也就是0~2
public class Demo03Random {
public static void main(String[] args) {
Random r = new Random();
for (int i = 0; i < 100; i++) {
int num = r.nextInt(3);
System.out.println(num);
}
}
}
猜数字小游戏
import java.util.Random;
import java.util.Scanner;
public class Demo04RandGame {
public static void main(String[] args) {
Random r = new Random();
int randomNem =r.nextInt(100)+1; //1~100
Scanner sc = new Scanner(System.in);
while (true){
System.out.println("请输入你猜测的数字:");
int guessNum = sc.nextInt();//键盘输入猜测的数字
if(guessNum > randomNem){
System.out.println("太大了,请重试");
}else if(guessNum < randomNem){
System.out.println("太小了,请重试");
}else {
System.out.println("恭喜你,猜中了");
break;
}
}
System.out.println("游戏结果");
}
}
