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("游戏结果");
}
}
[
](https://blog.csdn.net/m0_37381646/article/details/81456067)