java基础案例教程2-7抽取幸运观众

package chapter;
import java.util.Scanner;
import java.util.Random;
public class example2_7 {
	public static void main(String[] args) {
		Scanner input=new Scanner(System.in);
		String[] name=new String[3];
		System.out.println("请输入三位关注名字:");
		for(int i=0;i<3;i++) {
			int j=i+1;
			System.out.println("请输入第"+j+"个名字");
			String wname=input.next();
			name[i]=wname;
		}
		System.out.print("观众有:");
		for(int i=0;i<3;i++) {
			 System.out.print(name[i]+"  ");
			 
		}
		System.out.println();
		System.out.println("幸运观众是:");
		int i=new Random().nextInt(3);
		System.out.println(name[i]);
		
	}

}

<think>好的,我需要帮用户解决如何用Java实现从键盘输入三名观众姓名并随机抽取一名幸运观众的问题。首先,我得回顾一下用户提供的引用内容,看看有没有可以参考的代码或思路。 用户引用了多个Java代码示例,都是关于这个功能的。比如引用[2]和[3]中的代码都展示了如何通过Scanner获取输入,存储到数组中,然后使用Math.random()或Random类生成随机索引来选择幸运观众。这说明基本步骤应该是:输入处理、存储姓名、随机选择。 接下来,我需要确保代码结构正确。根据引用中的例子,通常包括以下几个部分: 1. 导入必要的包,如java.util.Scanner和java.util.Random。 2. 主方法中处理输入,使用循环读取三个姓名。 3. 存储到字符串数组中。 4. 生成随机数作为索引。 5. 输出结果。 需要注意不同引用中的实现方式有些差异,比如有的用Math.random(),有的用Random类。Math.random()生成的是0到1之间的double,乘以3再转int会得到0到2的整数,符合数组索引。而Random类的nextInt(3)方法也能达到同样效果。这两种方法都可以,但可能Random类更直观。 另外,用户提到要输入3名观众,所以数组长度固定为3。输入时需要用循环,比如for循环三次,每次读取一个姓名。确保处理输入时没有错误,比如使用sc.next()来获取字符串。 然后,展示所有输入的姓名,这一步在引用中的多个例子都有出现,可能用户需要确认输入是否正确,所以总览姓名是必要的步骤。 最后,随机选择并输出。需要确保随机数的范围正确,不能越界。例如,Math.random()*3得到0到3之间的数,取整后是0、1、2,刚好对应数组索引。 可能还需要处理一些异常情况,比如用户输入为空,但根据问题描述,可能暂时不需要考虑,保持代码简洁。根据引用中的例子,都没有异常处理,所以暂时省略。 现在,综合这些步骤,写出一个结构清晰、符合用户要求的Java程序。可能参考引用中的代码,但需要确保语法正确,比如数组声明、循环结构等。同时,代码要有注释,帮助用户理解每一步的作用。 最后,生成相关问题,可能涉及代码优化、性能分析或者应用场景,比如如何处理更多观众,或者如何避免重复抽取等。</think>### 解决方案 以下是使用Java实现从键盘输入3名观众姓名并随机抽取幸运观众的完整代码: ```java import java.util.Scanner; import java.util.Random; public class LuckyAudience { public static void main(String[] args) { // 1.创建存储观众的数组 String[] audience = new String[3]; // 2.读取观众姓名 Scanner scanner = new Scanner(System.in); System.out.println("请输入3位观众姓名:"); for (int i = 0; i < 3; i++) { System.out.print("第" + (i+1) + "位姓名:"); audience[i] = scanner.next(); } // 3.显示输入结果 System.out.println("\n已录入观众列表:"); for (String name : audience) { System.out.println(name); } // 4.随机抽取幸运观众 Random random = new Random(); int luckyIndex = random.nextInt(3); // 生成0-2的随机整数 System.out.println("\n幸运观众是:" + audience[luckyIndex]); } } ``` ### 关键实现步骤解析 1. **数据结构**:使用`String[3]`数组存储观众姓名,符合固定数量的需求[^2][^3] 2. **输入处理**:通过`Scanner`类实现键盘输入,循环三次完成数据采集[^4] 3. **随机算法**:`Random.nextInt(n)`方法可生成[0,n)区间的整数,保证数组访问的安全性[^3][^5] 4. **结果显示**:采用增强型for循环遍历数组,提高代码可读性 ### 运行效果示例 ``` 请输入3位观众姓名: 第1位姓名:张三 第2位姓名:李四 第3位姓名:王五 已录入观众列表: 张三 李四 王五 幸运观众是:李四 ``` ### 代码优化建议 1. 输入校验:可添加非空判断`if (scanner.hasNext())` 2. 扩展性:将数组长度改为变量`int count = 3`便于修改抽取人数 3. 去重机制:使用`Set`集合防止重复录入
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值