【第五章】Java API-常用类库(下)

目录

1.什么叫控制台?

[1.1 Scanner类](#1.1 Scanner类)

[1.2 交互尝试:模拟用户登录逻辑](#1.2 交互尝试:模拟用户登录逻辑)

2.随机数Random类

[2.1 使用Random可以生成随机数](#2.1 使用Random可以生成随机数)

[2.2 Random类:编程尝试](#2.2 Random类:编程尝试)

3.Math类

[3.1 常用方法](#3.1 常用方法)

[3.2 代码示例](#3.2 代码示例)

[3.3 Math类------动手尝试](#3.3 Math类——动手尝试)

[4 字符](#4 字符)

[4.1 字符Character](#4.1 字符Character)

[4.2 字符编码](#4.2 字符编码)

[4.3 字符与字符串](#4.3 字符与字符串)


1.什么叫控制台?

控制台 Console

在上个世纪,在图形界面出现之前的、一种基于文字的用户交互界面。

例如,windows仍保留了最古老的命令行界面(DOS)。。展示。

为什么要控制台这么古老的东西?

1 控制台在将来的正式开发中(公司里)不会用到

2 仅用于语法练习,模拟用户交互。

注:我们现在的重点不是界面是否好看

重点是语法、逻辑。

1.1 Scanner类

可以从各种输入源读取数据,包括控制台输入。

它可以解析基本类型和字符串的输入数据

使用方法:

Scanner scanner = new Scanner(System.in);

String input = scanner.nextLine();

int number = scanner.nextInt();

1.2 交互尝试:模拟用户登录逻辑

• 编写一个 Java 程序,模拟一个简单的登录界面。
• 程序首先向用户显示一个提示,要求用户输入用户名和密码。
• 然后,程序将输入的用户名和密码与预设的正确用户名和密码进行比较。
• 如果用户名和密码都正确,则打印一条欢迎消息;否则,打印一条错误消息并允许用户重试,最多重试 3 次。
• 如果 3 次都失败,则显示登录失败的消息。
• 输入说明

用户将被提示输入用户名和密码。

用户有3次输入尝试的机会.

•输出说明

如果用户名和密码正确,打印:"登录成功!欢迎,[用户名]!"

如果用户名或密码错误,打印:"用户名或密码错误,请重试。"

如果用户3次尝试都失败,打印:"登录失败,已达到最大尝试次数。"
• 实现提示

使用Scanner类从控制台读取输入。

设定一个正确的用户名和密码,用于登录验证。

使用循环实现最多3次的输入尝试。

使用条件语句判断用户输入是否正确。

2.随机数Random类

随机数在工程应用里时有用到。

例如,

牌类游戏:洗牌,每次开始游戏之前要把54张牌的顺序随机打乱。

又例如,

抽签功能:从若干个样本中投取几个样本。

(抽奖、摇号、抽签)

Random类是JDK里自带的基本类。

java.util.Random

2.1 使用Random可以生成随机数

Random rand = new Random();

int s = rand.nextInt(1000);

其中,nextInt(1000)表示生成一个0~1000的随机数

生成3个0~1000的随机数。

Random rand = new Random();

for(int i=0; i< 3; i++)

{

int s = rand.nextInt(1000);

System.out.println("生成随机数: " + s);

}

可以发现,每次生成的数是没有规律的(随机的)。

2.2 Random类:编程尝试

**题目描述:**某公司举办年会,共有96名员工参加。现在需要编写一个Java程序模拟抽取特等奖的过程。特等奖只有1名,需要从所有参加年会的员工中随机抽取。

实现提示:
• 使用 java.util.Random 类来生成随机数。
• 假定员工编号从 1 到 96 ,使用随机数来代表被抽中的员工编号。
• 特等奖的中奖编号需要是 1 到 96 之间的随机数。

3.Math类

3.1 常用方法

在 Java 语言里,Math 类提供了一系列进行基本数学运算的静态方法,包括指数、对数、平方根以及三角函数等。这个类位于java.lang包下,因此在使用时不需要导入任何外部包。
abs :返回参数的绝对值。
ceil :返回大于或等于参数的最小double值,等于一个整数。
floor :返回小于或等于参数的最大double值,等于一个整数。
round :最接近参数的 longint
min :返回两个参数中的较小值。
max :返回两个参数中的较大值。
pow :返回第一个参数的第二个参数次幂的值。
sqrt :返回参数的平方根。
exp :返回欧拉数 e 的参数次幂的值。
sin cos tan :分别返回参数的正弦、余弦、正切值。

3.2 代码示例

java 复制代码
public class MathDemo {
    public static void main(String[] args) {
        // 计算两个数的最大值
        System.out.println("Max of 5 and 10: " + Math.max(5, 10));
        // 计算平方根
        System.out.println("Square root of 16: " + Math.sqrt(16));
        // 计算一个数的次方
        System.out.println("2 to the power of 3: " + Math.pow(2, 3));
           
        // 生成一个随机数
        System.out.println("A random number: " + Math.random());
    }
}

3.3 Math类------动手尝试

**题目描述:**编写一个Java程序,要求用户输入一个圆的半径,然后计算并打印出这个圆的周长和面积。

输入说明

用户输入一个非负实数,表示圆的半径。

输出说明

首行输出圆的周长,保留两位小数。

第二行输出圆的面积,同样保留两位小数。

实现提示

使用Scanner类从控制台读取用户输入。

使用Math.PI获取圆周率π的值。

计算圆的周长公式为:2 * π * r,其中r是圆的半径。

计算圆的面积公式为:π * r^2。

使用String.format()或System.out.printf()来保留两位小数。

4 字符

4.1 字符Character

字符 Character ,代表一个文字或符号

在 Java 语言里,用char类型表示字符

例如,

char c1 = 'A';

char c2 = '9';

char c3 = '邵';

... 中文、日文、韩文、希腊文、... 人类的所有文字和符号

字符变量的写法:

(1) 只能表示一个字符

(2) 用英文单引号括号来

4.2 字符编码

每个字符都对应一个数字,称为字符编码例如,

char c = 'A';

int n = c;

System.out.println("编码为: " + n);

常见的有: 'A'为65 , 'B'为66 ... 'a'为97, 'b'为98...

'0' 为48, '1' 为49 ... ' '为32(空格) ..

地球上所有的文字和符号都有一个编码(Unicode码)

例如,

char c = '邵';

int n = c;

System.out.println("编码为: " + n);

其中,把 0-128 之间的称为 ASCII码 ( 仅英文、数字、英文标点符号等) , 对应键盘上的按键。

思考:

int n = 'C' - 'A'; // 值为多少?

int k = '2' - '0'; // 值为多少?

4.3 字符与字符串

字符串,就是一串字符

  • 转换 String => char

String str = "afanihao阿发你好";

char ch = str.charAt(8); // 下标从0开始计数

char[] chs = str.toCharArray();

  • 转换 char => String

char[] chs = {'阿', '发', '你', '好'};

String str = new String(chs, 1,3);

str += '的';

在字符串字符中查找字符

例如,

String str = "afanihao阿发你好";

int p = str.indexOf('发');

System.out.println("位置: " + p);

相关推荐
陌上花开࿈2 小时前
调用第三方接口
java
Aileen_0v02 小时前
【玩转OCR | 腾讯云智能结构化OCR在图像增强与发票识别中的应用实践】
android·java·人工智能·云计算·ocr·腾讯云·玩转腾讯云ocr
西猫雷婶3 小时前
python学opencv|读取图像(十九)使用cv2.rectangle()绘制矩形
开发语言·python·opencv
桂月二二4 小时前
Java与容器化:如何使用Docker和Kubernetes优化Java应用的部署
java·docker·kubernetes
liuxin334455664 小时前
学籍管理系统:实现教育管理现代化
java·开发语言·前端·数据库·安全
码农W4 小时前
QT--静态插件、动态插件
开发语言·qt
ke_wu4 小时前
结构型设计模式
开发语言·设计模式·组合模式·简单工厂模式·工厂方法模式·抽象工厂模式·装饰器模式
小马爱打代码4 小时前
设计模式详解(建造者模式)
java·设计模式·建造者模式
code04号4 小时前
python脚本:批量提取excel数据
开发语言·python·excel
小王爱吃月亮糖4 小时前
C++的23种设计模式
开发语言·c++·qt·算法·设计模式·ecmascript