0%

Java(6)Scanner类和Random类

Scanner 类(获取用户输入)

Scanner 类的功能:可以实现键盘输入数据,到程序当中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package com.tipdm.demo01;

import java.util.Scanner; // 1. 导包

/**
* Scanner 类的功能:可以实现键盘输入数据,到程序当中。
* 引用类型的一般使用步骤:
* 1. 导包
* import 包路径.类名称;
* 如果需要使用的目标类,和当前类位于同一个包下,则可以省略
* 只有java.lang包下的内容不需要导包,其他的包都需要import语句。
* 2. 创建
* 类名称 对象名 = new 类名称();
* 3. 使用
* 对象名.成员方法名()
* 获取键盘输入的一个int数字:int num = sc.nextInt();
* 获取键盘输入的一个字符串:String str = sc.next();
*/
public class demo1 {
public static void main(String[] args) {
// 2. 创建
// 备注:System.in代表从键盘输入
Scanner scr = new Scanner(System.in);
// 3. 使用
// 获取键盘输入的int数字
int num = scr.nextInt();
System.out.println(num);

// 获取键盘输入的字符串
String str = scr.next();
System.out.println(str);
}

}

1
2
3
4
5
6
520
520
Nihao
Nihao

进程已结束,退出代码0

练习:键盘输入两个数字并且求和

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package com.tipdm.demo01;

import java.util.Scanner;

/**
* 要求:键盘输入两个数字并且求和
*/
public class demo2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入第一个数字:");
int a = sc.nextInt();
System.out.print("请输入第二个数字:");
int b = sc.nextInt();
System.out.println(a+b);
}
}
1
2
3
4
5
请输入第一个数字:4
请输入第二个数字:2
6

进程已结束,退出代码0

练习:键盘输入三个int数字,然后求出其中的最大值。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package com.tipdm.demo01;

import java.util.Scanner;

/**
* 要求:键盘输入三个int数字,然后求出其中的最大值。
*/
public class demo3 {
public static void main(String[] args) {
Scanner str = new Scanner(System.in);
System.out.print("请输入第一个数字:");
int a = str.nextInt();
System.out.print("请输入第二个数字:");
int b = str.nextInt();
System.out.print("请输入第三个数字:");
int c = str.nextInt();
int max = a > b ? a : b;
max = max > c ? max : c;
System.out.println("最大值为:" + max);
}
}
1
2
3
4
5
6
请输入第一个数字:6
请输入第二个数字:8
请输入第三个数字:2
最大值为:8

进程已结束,退出代码0

匿名对象

创建对象的标准格式:

1
类名称 对象名 = new 类名称()

匿名对象就是只有右边的对象,没有左边的名字和赋值运算符。

1
new 类名称();

注意事项:匿名对象只能使用唯一的一次,下次再用不得不再创建一个新的对象。

使用建议:如果确定有一个对象只需要使用唯一的一次,就使用匿名对象。

创建匿名对象

1
2
3
4
5
6
7
8
9
10
package com.tipdm.demo01;

public class Person {
String name;

public void showName(){
System.out.println(this.name);
}
}

调用匿名对象:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package com.tipdm.demo01;

/**
* 创建对象的标准格式:
* 类名称 对象名 = new 类名称()
*
* 匿名对象就是只有右边的对象,没有左边的名字和赋值运算符。
* new 类名称();
* 注意事项:匿名对象只能使用唯一的一次,下次再用不得不再创建一个新的对象。
* 使用建议:如果确定有一个对象只需要使用唯一的一次,就使用匿名对象。
*/
public class demo4 {
public static void main(String[] args) {
// 左边的one就算对象的名字
Person one = new Person();
one.showName();
one.name = "赵丽颖";
one.showName();

// 匿名对象
new Person().name = "赵又廷";
new Person().showName(); // null
}
}

1
2
3
4
5
null
赵丽颖
null

进程已结束,退出代码0

匿名对象的使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package com.tipdm.demo01;

import java.util.Scanner;

public class demo5 {
public static void main(String[] args) {
// 普通使用方式
// Scanner sc = new Scanner(System.in);
// int num = sc.nextInt();

// 匿名对象的方式
// int num1 = new Scanner(System.in).nextInt();
// System.out.println("输入的是:" + num1);

// 使用匿名对象来进行传参
// methodParam(new Scanner(System.in));

// 使用匿名对象作为返回值
Scanner sc = methodReturn();
int num = sc.nextInt();
System.out.println("输入的是:" + num);
}

public static void methodParam(Scanner sc){
int num1 = sc.nextInt();
System.out.println("输入的是:" + num1);
}

public static Scanner methodReturn(){
// Scanner sc = new Scanner(System.in);
// return sc
return new Scanner(System.in);
}
}
1
2
3
4
123
输入的是:123

进程已结束,退出代码0

Random 类(生成随机数)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package com.tipdm.demo02;

import java.util.Random;

/**
* Random类用来生成随机数。使用起来也是三个步骤:
* 1. 导包
* import java.util.Random
* 2. 创建
* Random ran = new Random(); // 小括号当中留空即可
* 3. 使用
* 获取一个随机的int数字(范围是int所有范围,有正负两种):int num = r.nextInt()
* 获取一个随机的int数字(参数代表了范围):int num = r.nextInt(3)
* 实际上代表的含义是生成一个在[0, 3)中的随机整数
*
*/
public class demo1 {
public static void main(String[] args) {
Random ran = new Random();
byte[] a = new byte[10];
// 将生成的随机字节放入指定的byte数组中
ran.nextBytes(a);
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
ran.setSeed(2022L);
System.out.println("===============");
System.out.println("Int范围内随机数:" + ran.nextInt());
System.out.println("Long范围内的随机数:" + ran.nextLong());
System.out.println("指定范围内随机数:" + ran.nextInt(5)); // 0~4
System.out.println("0-1直接的Double浮点数:" + ran.nextDouble());
System.out.println("0-1直接的Float浮点数:" + ran.nextFloat());
System.out.println("生成均值为0,方差为1的高斯分布随机数:" + ran.nextGaussian());
System.out.println("生成一个随机bool数:" + ran.nextBoolean());
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
25
103
-10
54
44
92
-97
-116
-31
119
===============
Int范围内随机数:-1636420702
Long范围内的随机数:2245207439052422374
指定范围内随机数:2
0-1直接的Double浮点数:0.509194274098713
0-1直接的Float浮点数:0.40048516
生成均值为0,方差为1的高斯分布随机数:-0.4719171609218587
生成一个随机bool数:false

进程已结束,退出代码0

练习:根据int变量n的值,来获取随机数字,范围是[1, n],可以取到1也可以取到n

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package com.tipdm.demo02;

import java.util.Random;
import java.util.Scanner;

/**
* 要求:根据int变量n的值,来获取随机数字,范围是[1, n],可以取到1也可以取到n。
*/
public class demo2 {
public static void main(String[] args) {
Random ran = new Random();
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for (int i = 0; i < 10; i++) {
int res = ran.nextInt(n) + 1; // 本来范围是[0, n-1],整体+1之后就变成了[1, n]
System.out.println(res);
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
6
2
6
5
6
1
6
6
5
6
2

进程已结束,退出代码0

练习:猜数字小游戏

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package com.tipdm.demo02;

import java.util.Random;
import java.util.Scanner;

/**
* 猜数字小游戏
* 最后返回猜数字的次数
*/
public class demo3 {
public static void main(String[] args) {
System.out.println("猜数字游戏请才一个0~100中的数字。");
Random ran = new Random();
Scanner sc = new Scanner(System.in);
int num = ran.nextInt(101); // 生成随机数字
int n = 1; // 用来存储猜数字的次数
while(true){
int get_num = sc.nextInt();
if(get_num > num){
System.out.println("大了!" + n);
}else if(get_num < num){
System.out.println("小了!" + n);
}else{
System.out.println("恭喜你猜中了,数字就是:" + num + ", 你一共猜了" + n + "次。");
break;
}
n++;
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
猜数字游戏请才一个0~100中的数字。
90
大了!1
45
小了!2
70
小了!3
80
小了!4
85
大了!5
83
大了!6
82
恭喜你猜中了,数字就是:82, 你一共猜了7次。

进程已结束,退出代码0
-------------本文结束感谢您的阅读-------------