目录
一、Scanner
一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。
Scanner
使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配。然后可以使用不同的 next 方法将得到的标记转换为不同类型的值。
例如,以下代码使用户能够从 System.in 中读取一个数:
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
以下代码使 long
类型可以通过 myNumbers
文件中的项分配:
Scanner sc = new Scanner(new File("myNumbers"));
while (sc.hasNextLong()) {
long aLong = sc.nextLong();
}
扫描器还可以使用不同于空白的分隔符。下面是从一个字符串读取若干项的例子:
public class Aa {
public static void main(String[] args) {
String input = "1 fish 2 fish red fish blue fish";
Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*");
System.out.println(s.nextInt());
System.out.println(s.nextInt());
System.out.println(s.next());
System.out.println(s.next());
s.close();
}
}
输出结果为:
使用步骤
Scanner 类位于 java.util 包中,使用前需要引入它,语法格式如下:
import java.util.Scanner;
构造方法
方法
public class ScannerTest {
public static void main(String[] args) {
//1.定义扫描器用来扫描键盘的输入
Scanner scanner = new Scanner(System.in);
//2.打印输出一个提示信息
System.out.println("请输入一个整数:");
//3.使用扫描器对象获得键盘的输入
int num = scanner.nextInt();
//4.使用结果
System.out.println("你输入的是:"+num);
}
}
键盘输出运行如下:
二、 Random
此类的实例用于生成伪随机数流。
如果用相同的种子创建两个 Random
实例,则对每个实例进行相同的方法调用序列,它们将生成并返回相同的数字序列。为了保证此属性的实现,为类 Random
指定了特定的算法。为了 Java 代码的完全可移植性,Java 实现必须让类 Random
使用此处所示的所有算法。但是允许 Random
类的子类使用其他算法,只要其符合所有方法的常规协定即可。
Random
类实现的算法使用一个 protected
实用工具方法,每次调用它最多可提供 32 个伪随机生成的位。
很多应用程序会发现 Math.random()
方法更易于使用。
使用步骤
Random 类位于 java.util 包中,使用前需要引入它,语法格式如下:
import java.util.Random;
构造方法:
传入参数,确定一个种子来记录,每次生成的随机数是相同的。
public class RandomTest {
public static void main(String[] args) {
Random random = new Random(1);//不指定参数,表示每一次都会重新生成一个随机数,传入参数,确定一个种子来记录,每次生成的随机数是相同的
int num = random.nextInt();
System.out.println(num);
}
}
运行结果:
不指定参数,表示每一次都会重新生成一个随机数。
public class RandomTest {
public static void main(String[] args) {
Random random = new Random();//不指定参数,表示每一次都会重新生成一个随机数,传入参数,确定一个种子来记录,每次生成的随机数是相同的
int num = random.nextInt();
System.out.println(num);
}
}
运行结果:
下标0开始 5个长度 0 1 2 3 4
public class RandomTest {
public static void main(String[] args) {
Random random = new Random();
int num = random.nextInt(5); //0 1 2 3 4
System.out.println(num);
}
}
运行结果:
方法
三、ArrayList
ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。ArrayList 继承了 AbstractList ,并实现了 List 接口,List 接口的大小可变数组的实现。
每个 ArrayList 实例都有一个容量。该容量是指用来存储列表元素的数组的大小。它总是至少等于列表的大小。随着向 ArrayList 中不断添加元素,其容量也自动增长。
使用步骤
ArrayList 类位于 java.util 包中,使用前需要引入它,语法格式如下:
import java.util.ArrayList; // 引入 ArrayList 类 ArrayList<引用数据类型> 对象名 =new ArrayList<>(); // 初始化
例如:
ArrayList<String> list=new ArrayList<>();
构造方法
方法
添加元素
import java.util.ArrayList;
public class ArrayListTest {
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add("美乐蒂");
list.add("布丁狗");
list.add("HelloKitty");
System.out.println(list);
}
}
还可以通过索引来添加元素
import java.util.ArrayList;
public class ArrayListTest {
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add(0,"美乐蒂");
list.add(1,"布丁狗");
list.add(2,"HelloKitty");
System.out.println(list);
}
}
运行结果为:
删除元素
删除 ArrayList 中的元素可以使用 remove() 方法:
import java.util.ArrayList;
public class ArrayListTest {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("美乐蒂");
list.add("布丁狗");
list.add("HelloKitty");
list.add("玉桂狗");
list.remove(2); // 删除索引为2的元素
System.out.println(list);
}
}
运行结果为:
用size() 计算有多少条数据
import java.util.ArrayList;
public class ArrayListTest {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("美乐蒂");
list.add("布丁狗");
list.add("HelloKitty");
list.add("玉桂狗");
System.out.println(list.size());
}
}
运行结果为:
其他的引用类型
ArrayList 中的元素实际上是对象,在以上实例中,数组列表元素都是字符串 String 类型。
如果我们要存储其他类型,而 <E> 只能为引用数据类型,这时我们就需要使用到基本类型的包装类。
基本类型对应的包装类表如下:
此外,BigInteger、BigDecimal 用于高精度的运算,BigInteger 支持任意精度的整数,也是引用类型,但它们没有相对应的基本类型。
rrayList<Integer> li=new Arraylist<>(); // 存放整数元素
ArrayList<Character> li=new Arraylist<>(); // 存放字符元素
以下使用 ArrayList 存储数字(使用 Integer 类型):
import java.util.ArrayList;
public class ArrayListTest{
public static void main(String[] args) {
ArrayList<Integer> list= new ArrayList<Integer>();
list.add(10);
list.add(15);
list.add(20);
list.add(25);
for (int i : list) {
System.out.println(i);
}
}
}
运行如下:
ArrayList 排序
Collections 类也是一个非常有用的类,位于 java.util 包中,提供的 sort() 方法可以对字符或数字列表进行排序。
以下实例对字母进行排序:
import java.util.ArrayList;
import java.util.Collections; // 引入 Collections 类
public class ArrayListTest {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("Hello Kitty");
list.add("MyMelody");
list.add("Pom Pom Purin ");
list.add("Pachacco");
list.add("ShimitsYuko");
Collections.sort(list); // 字母排序
for (String i : list) {
System.out.println(i);
}
}
}
运行结果如下:
其他的大家可以根据上面发的方法自己动手试试噢。
下面是一个案例,来看看吧
案例--猜数字
随机生产一个1-100之间的数字,然后用户猜数字,大了提示猜大了,小了提示猜小了,猜对了则统计猜的次数。
定义键盘输入和随机数
Scanner scanner = new Scanner(System.in);
Random random = new Random();
设置1-100间的数字
int num = random.nextInt(100)+1;//生成0-99 再加1 1-100;
设置一个放总次数的
int count = 1; //统计猜的总次数
使用do while 循环 中间if判断
do {
System.out.println("请输入你猜的数字: ");
int input = scanner.nextInt();
if (input > num) {
System.out.println("猜大了!!");
} else if (input < num) {
System.out.println("猜小了!!");
} else {
System.out.println("恭喜你猜对了!!");
break;
}
count++;
}while (true);
猜对了就打印输出总数量
System.out.println("本次游戏共猜了" + count + "次。");
整体代码:
public class Test01 {
public static void main(String[] args) {
//使用Scanner和Random完成一个猜数字的小游戏:
//随机生产一个1-100之间的数字,然后用户猜数字,大了提示猜大了,小了提示猜小了,猜对了则统计猜的次数
Scanner scanner = new Scanner(System.in);
Random random = new Random();
int num = random.nextInt(100)+1;//生成0-99 再加1 1-100;
int count = 1; //统计猜的总次数
//使用死循环进行猜数字,直到猜对结束循环
do {
System.out.println("请输入你猜的数字: ");
int input = scanner.nextInt();
//判断输入的数字和随机生成的数字
if (input > num) {
System.out.println("猜大了!!");
} else if (input < num) {
System.out.println("猜小了!!");
} else {
System.out.println("恭喜你猜对了!!");
//break循环结束
break;
}
//次数+1
count++;
}while (true);
System.out.println("本次游戏共猜了" + count + "次。");
}
}
运行结果如下: