Arrays {#Arrays}
概述 {#概述}
java.util.Arrays
此类包含用来操作数组的各种方法,比如排序和搜索等。其所有方法均为静态方法,调用起来非常简单。
常用方法 {#常用方法}
public static String toString(int[] a)
:返回指定数组内容的字符串表示形式。
代码示例 {#代码示例}
public static void main(String[] args) {
// 定义 int 数组
int[] arr = {2, 34, 35, 4, 657, 8, 69, 9};
// 打印数组, 输出数组地址
System.out.println("arr =" + arr);// arr = [I@1b6d3586
// 数组内容转换为字符串
String s = Arrays.toString(arr);
// 打印字符串, 输出内容
System.out.println("s =" + s); // s = [2, 34, 35, 4, 657, 8, 69, 9]
}
public static void sort(int[] a)
:对指定的 int 型数组按数字升序进行排序。
代码示例 {#代码示例 -1}
public static void main(String[] args) {
// 定义 int 数组
int[] arr = {24, 7, 5, 48, 4, 46, 35, 11, 6, 2};
// 24, 7, 5, 48, 4, 46, 35, 11, 6, 2
System.out.println("排序前 =" + Arrays.toString(arr));
<span class="token comment">// 升序排序</span>
<span class="token class-name">Arrays</span><span class="token punctuation">.</span><span class="token function">sort</span><span class="token punctuation">(</span>arr<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// 2, 4, 5, 6, 7, 11, 24, 35, 46, 48</span>
<span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"排序后 ="</span> <span class="token operator">+</span> <span class="token class-name">Arrays</span><span class="token punctuation">.</span><span class="token function">toString</span><span class="token punctuation">(</span>arr<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
}
public static <T> void sort(T[] a, Comparator<? super T> c)
: 对指定的 int 型数组按数字降序进行排序。
public static void main(String[] args) {
// 定义 int 数组
int[] arr = {24, 7, 5, 48, 4, 46, 35, 11, 6, 2};
// 24, 7, 5, 48, 4, 46, 35, 11, 6, 2
System.out.println("排序前 =" + Arrays.toString(arr));
// 降序排序
Arrays.sort(new int[][]{arr}, Collections.reverseOrder());
// 24, 7, 5, 48, 4, 46, 35, 11, 6, 2
System.out.println("排序后 =" + Arrays.toString(arr));
}
练习 {#练习}
需求: 将一个随机字符串中的所有字符升序排列,并倒序打印。
public class ArraysDemo3 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个随机字符串:");
String s = scanner.nextLine();
// 转换为字符数组
char[] chars = s.toCharArray();
// 升序排序
Arrays.sort(chars);
// 反向遍历打印
for (int i = chars.length - 1; i >= 0; i--) {
System.out.print(chars[i] + "");
}
}
}
Scanner {#Scanner}
什么是 Scanner 类? {#什么是 Scanner 类}
一个可以解析基本数据类型和字符串的简单文本扫描器;
调用方法 {#调用方法}
接下来需要明确方法的功能,如果方法是实例方法,需要创建对象来访问,如果方法是静态方法可以直接用类名来调用。
例如:Scanner 类方法如下:
public int nextInt() :将输入信息的下一个标记扫描为一个 int 值。
该方法为实例方法需要创建对象来调用,查看构造器如下:
public Scanner(InputStream source) :
// 构造一个新的 Scanner ,它生成的值是从指定的输入流扫描的。查看成员方法
使用 Scanner 类,完成接收键盘录入数据的操作,代码如下:
public class ScannerDemo {
public static void main(String[] args) {
//1. 创建键盘录入数据的对象
Scanner sc = new Scanner(System.in);
//2. 接收数据
System.out.println("请录入一个整数:");
int i = sc.nextInt();
//3. 输出数据
System.out.println("用户输入的数值 = :" + i);
}
}
练习 {#练习 -1}
package com.mobaijun.day05;
import java.util.Scanner;
/**
`
`
* @Author: Auser·杰
* Development: IntelliJ IDEA 2018.2.4 x64
* ClassName: ScannerDemo2
* ClassCreateDate: 2020/5/2 17:41
* `类简介: 接收键盘录入三个随机数并获取最大值
*/``
`public` `class` `ScannerDemo2` `{`
`public` `static` `void` `main(String[]` args`)` `{`
`// 1. 创建 scanner 对象`
`Scanner` sc `=` `new` `Scanner(System.`in`);`
`// 提示用户输入`
`System.`out`.println("请输入三个随机数:");`
`// 2. 接收用户键盘录入`
`// 接收第一个数值`
`System.`out`.println("请输入第一个随机数");`
`int` i1 `=` sc`.nextInt();`
`System.`out`.println("第一个随机数是 +"` `+` i1`);`
`// 接收第二个数值`
`System.`out`.println("请输入第二个随机数");`
`int` i2 `=` sc`.nextInt();`
`System.`out`.println("第二个随机数是 +"` `+` i2`);`
`// 接收第三个数值`
`System.`out`.println("请输入第三个随机数");`
`int` i3 `=` sc`.nextInt();`
`System.`out`.println("第三个随机数是 +"` `+` i3`);`
`// 使用三元运算符获取最大值`
`int` max `=` i1 `>` i2 `?` i1 `:` i2`;`
max `=` max `>` i3 `?` max `:` i3`;`
`System.`out`.println("最大值是 ="` `+` max`);`
`}`
`}
Math {#Math}
java.lang.Math
类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。类似这样的工具类,其所有方法均为静态方法,并且不会创建对象,调用起来非常简单。
基本运算的方法 {#基本运算的方法}
public static double abs(double a)
:返回 double 值的绝对值。
public static void main(String[] args) {
double d1 = Math.abs(-5);
System.out.println("d1 =" + d1); // d1 = 5.0
double d2 = Math.abs(5);
System.out.println("d2 =" + d2); // d2 = 5.0
}
public static double ceil(double a)
:返回大于等于参数的最小的整数。
System.out.println("d3 =" + d3); // d3 = 4.0
double d4 = Math.ceil(-3.3);
System.out.println("d4 =" + d4); // d4 = -3.0
double d5 = Math.ceil(5.1);
System.out.println("d5 =" + d5); //d 5 = 6.0
public static double floor(double a)
:返回小于等于参数最大的整数。
double d6 = Math.floor(3.3);
System.out.println("d6 =" + d6); // d7 = -4.0
double d7 = Math.floor(-3.3);
System.out.println("d7 =" + d7);// d7 = -4.0
double d8 = Math.floor(5.1);
System.out.println("d8 =" + d8); // d8 = 5.0
public static long round(double a)
:返回最接近参数的 long。(相当于四舍五入方法)
long d1 = Math.round(5.5);
System.out.println("d1 =" + d1); // d1 = 6
long d2 = Math.round(5.4);
System.out.println("d2 =" + d2); // d2 = 5
练习 {#练习 -2}
请使用
Math
类,计算在-10.8
到5.9
之间,绝对值大于6
或者小于2.1
的整数有多少个?
Random {#Random}
此类的实例用于生成伪随机数,在实际开发中,通常用于在程序中生产一个随机数。
Random 使用案例 {#Random 使用案例}
一: {#一}
需求:使用 Random 类,完成生成 3 个 10 以内的随机整数的操作
备注: 创建一个 Random 对象,每次调用 nextInt() 方法,都会生成一个随机数。调用 nextInt(int n) 方法,会生成一个 0-n(不包含 n)的随机数。
public static void main(String[] args) {
// 创建一个随机数对象
Random random = new Random();
<span class="token comment">// 循环遍历随机数</span>
<span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">int</span> j <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> j <span class="token operator"><</span> <span class="token number">3</span><span class="token punctuation">;</span> j<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token comment">// 调用 nextInt()方法得到一个 10 以内的随机整数</span>
<span class="token keyword">int</span> i <span class="token operator">=</span> random<span class="token punctuation">.</span><span class="token function">nextInt</span><span class="token punctuation">(</span><span class="token number">10</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// 打印随机数</span>
<span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">print</span><span class="token punctuation">(</span><span class="token string">""</span> <span class="token operator">+</span> i<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>
#### 二: {#二}
> 需求:获取 1-n 之间的随机数,包含 n
>
>
```java
public static void main(String[] args) {
// 定义最大值变量
int num = 10;
// 生成随机数对象
Random random = new Random();
// 循环遍历随机数
for (int i = 0; i < 3; i++) {
// 随机数 +1
int n = random.nextInt(num) + 1;
// 打印随机数
System.out.print("" + n);
}
}
```
#### 三: {#三}
> 需求:猜数字小游戏
> 游戏开始时,会随机生成一个 1-10 之间的整数 number 。玩家猜测一个数字 guessNumber ,会与 number 作比较,系统提示大了或者小了,直到玩家猜中,游戏结束。
> 小贴士:先运行程序代码,理解此题需求,经过分析后,再编写代码。
>
>
```java
import java.util.Random;
import java.util.Scanner;
/**
`
`
* Software:IntelliJ IDEA 2018.2.4 x64
* Author: MoBai·杰
* Date: 2020/5/3 16:17
* ClassName:RanDomDemo4
* 类描述:
* (1) 游戏开始
* (2) 随机生成一个 1-100 之间的整数 number 。
* `(3) 玩家必须反复的猜测,直到猜中为主。
*/``
`public` `class` `RanDomDemo4` `{`
`public` `static` `void` `main(String[]` args`)` `{`
`// 创建 scanner 对象接收用户键盘录入`
`Scanner` scanner `=` `new` `Scanner(System.`in`);`
`System.`out`.println("游戏开始:");`
`// 随机生成一个 1-100 之间的整数 number 。`
`Random` random `=` `new` `Random();`
`// 调用它的 nextInt(边界参数)得到随机数(1-100)`
`int` number `=` random`.nextInt(100)` `+` `1;`
`while` `(true)` `{`
`System.`out`.println("请输入您要猜测的随机数:");`
`int` getGussNumber `=` scanner`.nextInt();`
`// 判断用户的猜测数字情况`
`if` `(`getGussNumber `>` number`)` `{`
`System.`out`.println("您猜测的数字过大");`
`}` `else` `if` `(`getGussNumber `<` number`)` `{`
`System.`out`.println("您猜测的数字过小");`
`}` `else` `{`
`System.`out`.println("恭喜您,您很棒哦,猜对了!");`
`System.`out`.println("号码就是:"` `+` number`);`
`break;`
`}`
`}`
`}`
`}
```