Java Scanner 类
Java 用户输入
Scanner
类用于获取用户输入,它位于 包中。java.util
要使用 类,请创建该类的对象,并使用 类文档中的任何可用方法。 在我们的示例中,我们将使用方法,该方法用于读取字符串:Scanner
Scanner
nextLine()
import java.util.Scanner; // 导入 Scanner 类
class MyClass {
public static void main(String[] args) {
Scanner myObj = new Scanner(System.in); // 创建一个 Scanner 对象
System.out.println("Enter username");
String userName = myObj.nextLine(); // 读取用户输入
System.out.println("Username is: " + userName); // 输出用户输入
}
}
输入类型
在上面的示例中,我们使用了 方法,该方法用于读取字符串。要阅读其他类型,请查看下表:nextLine()
方法 | 描述 |
---|---|
nextBoolean() |
从用户处读取boolean 布尔值 |
nextByte() |
从用户处读取byte 字节值 |
nextDouble() |
从用户处读取double 双精度值 |
nextFloat() |
从用户处读取float 浮点值 |
nextInt() |
从用户处读取int 值 |
nextLine() |
从用户处读取String 字符串值 |
nextLong() |
从用户处读取long 值 |
nextShort() |
从用户处读取short 值 |
Java Random 类
Random 类提供了丰富的随机数生成方法,可以产生 boolean、int、long、float、byte 数组以及 double 类型的随机数,这是它与 random() 方法最大的不同之处。random() 方法只能产生 double 类型的 0~1 的随机数。
Random 类位于 java.util 包中,该类常用的有如下两个构造方法。
- Random():该构造方法使用一个和当前系统时间对应的数字作为种子数,然后使用这个种子数构造 Random 对象。
- Random(long seed):使用单个 long 类型的参数创建一个新的随机数生成器。
Random 类提供的所有方法生成的随机数字都是均匀分布的,也就是说区间内部的数字生成的概率是均等的,在表 1 中列出了 Random 类中常用的方法。
方法 | 说明 |
---|---|
boolean nextBoolean() | 生成一个随机的 boolean 值,生成 true 和 false 的值概率相等 |
double nextDouble() | 生成一个随机的 double 值,数值介于 [0,1.0),含 0 而不包含 1.0 |
int nextlnt() | 生成一个随机的 int 值,该值介于 int 的区间,也就是 -231~231-1。如果 需要生成指定区间的 int 值,则需要进行一定的数学变换 |
int nextlnt(int n) | 生成一个随机的 int 值,该值介于 [0,n),包含 0 而不包含 n。如果想生成 指定区间的 int 值,也需要进行一定的数学变换 |
void setSeed(long seed) | 重新设置 Random 对象中的种子数。设置完种子数以后的 Random 对象 和相同种子数使用 new 关键字创建出的 Random 对象相同 |
long nextLong() | 返回一个随机长整型数字 |
boolean nextBoolean() | 返回一个随机布尔型值 |
float nextFloat() | 返回一个随机浮点型数字 |
double nextDouble() | 返回一个随机双精度值 |
根据Scanner,Random和ArrayList 编写猜数字游戏
package ChangYL;
import java.util.Random;
import java.util.Scanner;
public class Sjs {
public static void main(String[] args) {
// 随机生成一个数字
Random r=new Random();
// 确定数字生成范围
int a=r.nextInt(100)+1;
// 控制台输入数据
System.out.println("随机数字已生成,请输入0-100之间的数字");
Scanner sc=new Scanner(System.in);
while (true) {
int b=sc.nextInt();
int c=1;
if (a>b) {
System.out.println("输入的数字"+b+"太小了,请再次输入");
c++;
}else if(a<b) {
System.out.println("输入的数字"+b+"太大了,请再次输入");
c++;
}else{
System.out.println("恭喜你!猜对了");
if (c<=3) {
System.out.println("你好聪明呀!");
}else if (c<=6) {
System.out.println("还不错哦.");
}else {
System.out.println("你真是个大**");
}
}
}
}
}
不重复的点名程序
package ChangYL;
import java.util.*;
public class Dm {
public static void main(String[] args) {
List<String> list = Arrays.asList("aa", "bb", "cc", "dd", "ee", "ff", "gg", "hh", "ii");
ArrayList<String> names = new ArrayList<>(list);
Scanner sc = new Scanner(System.in);
Random random = new Random();
while (true) {
if (names.size() == 0) {
System.out.println("点名完毕!");
break;
}
System.out.println("请输入字母启动程序:");
String cs = sc.next();
if (cs.equals("Y") || cs.equals("y")) {
int index = random.nextInt(names.size());
System.out.println(names.get(index));
names.remove(index);
} else {
System.out.println("点名结束!");
}
}
}
}