关于8-2项目作业的问题
问题描述:想要嵌套两个for循环,但是逻辑有点理不清楚,
代码要如何改进呢
相关代码:
int money;//消费金额
int times;//抽奖次数
int i=(int)(Math.random()*10);//奖品编号
while (true) {
System.out.println("请输入本次消费的总金额");
Scanner sc = new Scanner(System.in);
money = sc.nextInt();
if (money >= 100) {
System.out.println("您具有三次抽奖机会");
for (int j = 1; j <=3 ; j++) {
System.out.println("请开始您的第" + j + "次抽奖");
Scanner sc2 = new Scanner(System.in);
times = sc2.nextInt();
for (int k = 1; k <= 3; k++) {
if (i <= 3) {
if (i == 1) {System.out.println("恭喜你抽中一等奖--键盘一台");
break;}else
if (i == 2) {System.out.println("恭喜你抽中二等奖--键盘一台");
break;}else
if (i == 3) {
System.out.println("恭喜你抽中三等奖--键盘一台");
break;
}
} else if (i == 0) {
System.out.println("很遗憾下次再来吧");
}
}
}
} else {
System.out.println("您的消费金额不足100元,不能抽奖");
break;
}
}
}
64
收起
正在回答
1回答
同学你好,代码中存在如下问题:
1、将Scanner放在循环外面,避免重复创建浪费资源。
2、每次抽奖都需随机产生一个新的随机数,故需将产生随机数定义在里层循环内部。
3、因为抽奖机会是随机的,所以无需用户再次从控制台输入数据,直接对产生随机数进行判断即可。
4、判断完产生的随机数后,需继续执行循环,无需使用break结束循环。
具体内容请查看下方截图,注释中有相关解析。如下所示:
int money;// 消费金额 int i;// 奖品编号 Scanner sc = new Scanner(System.in); while (true) { System.out.println("请输入本次消费的总金额(输入-1退出)"); money = sc.nextInt(); if (money >= 100) { System.out.println("您具有三次抽奖机会"); for (int j = 1; j <= 3; j++) { System.out.println("请开始您的第" + j + "次抽奖"); i = (int) (Math.random() * 4);//每次抽奖都需要产生随机的数字,故需要放到循环内书写。产生随机数为:0~3 if (i == 1) { System.out.println("恭喜你抽中一等奖--键盘一台"); } else if (i == 2) { System.out.println("恭喜你抽中二等奖--键盘一台"); } else if (i == 3) { System.out.println("恭喜你抽中三等奖--键盘一台"); } else { System.out.println("很遗憾下次再来吧"); } } } else if(money==-1){ System.out.println("欢饮下次光临!"); break;//跳出循环,程序结束 } else { System.out.println("您的消费金额不足100元,不能抽奖"); continue;//结束当前循环,进入下一轮循环 } }
祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星