Scanner
Scanner 是一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器;
使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配。然后可以使用不同的 next 方法将得到的标记转换为不同类型的值
以下代码使用户能够从 System.in 中读取一个数:
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
Scanner是一个类,一下是他的所有构造方法 (在使用中一般使用第三个构造方法)
Scanner(File source) 构造一个新的 Scanner ,它生成的值是从指定文件扫描的。 |
Scanner(File source, String charsetName) 构造一个新的 Scanner ,它生成的值是从指定文件扫描的。 |
Scanner(InputStream source) 构造一个新的 Scanner ,它生成的值是从指定的输入流扫描的。 |
Scanner(InputStream source, String charsetName) 构造一个新的 Scanner ,它生成的值是从指定的输入流扫描的。 |
在使用的时候会需要我们输入制定类型的 对于Scanner有一些常用到的方法,next后面的就是标记扫描的数据类型
- nextInt() Int类型
- nextByte() Byte类型
- nextLong() long类型
- nextBoolean() Boolean类型
- nextDouble() Double类型
- nextFloat() Float类型
- next() 字符串类型
//导包
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
//实例化Scanner对象
Scanner sc = new Scanner (System.in);
//声明一个变量b 将通过控制台输入的值(int类型的)赋值给b
int b = sc.nextInt();
}
}
Random
随机生成数
Random的构造方法:
Random() 创建一个新的随机数生成器。 |
Random(long seed) 使用单个 long 种子创建一个新的随机数生成器。 |
//导包
import java.util.Random;
public class Main {
public static void main(String[] args) {
//实例化Random 对象
Random ra = new Random();
//随机十个数(从0开始)
int a = ra.nextInt(10);
}
}
注意:在随机的范围中 int a = ra.nextInt(10) 循环的数字是从0-9共10个数,要想拿到1-10 这是个数,要在整体的后面进行+1 : int a = ra.nextInt(10)+1;如果是在括号中直接写11的话随机 的是0-10 的是一个数
ArrayList
ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。
ArrayList 继承了 AbstractList ,并实现了 List 接口。
使用步骤:
1)Arraylist类位于java.util 包中,使用前余姚引入它:
import java.util.ArrayList; // 引入 ArrayList 类
2)初始化
ArrayList<E> objectName =new ArrayList<>(); // 初始化
E: 泛型数据类型,用于设置 objectName 的数据类型,只能为引用数据类型。
objectName: 是对象名
常用方法
添加元素:
package Demo;
import java.util.ArrayList;
public class DemoArraylistEach {
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add("张三");
list.add("李四");
list.add("王五");
System.out.println(list);
//下标为1的地方添加小明(其他元素依次后移)
list.add(1,"小明");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
输出结果的:
[张三, 李四, 王五]
张三
小明
李四
王五
移除元素:
package Demo;
import java.util.ArrayList;
public class DemoArraylistEach {
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add("张三");
list.add("李四");
list.add("王五");
System.out.println(list);
//下标为1的地方添加小明(其他元素依次后移)
list.add(1,"小明");
//移除下标为2d的元素
list.remove(2);
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
运行结果为:(下标为2的李四被移除了)
[张三, 李四, 王五]
张三
小明
王五
猜数字游戏的案例
思路:
- 首先要有一个随机生成的数字 数字的随机生成范围1~100(当然也可以也可以根据心情随机设置范围)
- 用户在控制台进行输入
- 对用户在控制台输入的数字和随机生成的数字比较,如果玩家猜测的数字大了,显示输入的数字大了,反之输出小了, 如果和随机生成的数字相同则提示 玩家猜对了
- 在玩家输入数字的时候,只要没有猜对,则需要一直执行输入数字然后判断的过程(注意:随机生成的数字不可以写进循环里,不然没有猜对刚才的数字又随机了一个新的数字)
- 在猜中后结束循环,显示玩家一共猜的次数(可以在循环中定义一个变量,每循环一次,对其加1,结束后输出即可)
下面是代码案例:
import java.util.Random;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner (System.in);
Random ran = new Random();
// 系统随机的数字
int a = ran.nextInt(100)+1;
// 记录猜的次数
int sum=0;
// 循环条件
boolean bl =true;
System.err.println("游戏开始:请输入你想猜的数字");
do {
// 输入的数
int c = sc.nextInt();
// 次数增加
sum++;
// 判断
if(c >a){
System.out.println("你猜的数字大了");
}else if(c<a){
System.out.println("你猜的数小了");
}else{
System.out.println("恭喜你猜对了");
System.out.println("你猜了"+sum+"次");
bl = false;
}
}while(bl);
}
}