关于8-2项目作业的问题

关于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;
}


}
}


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,代码中存在如下问题:
1、将Scanner放在循环外面,避免重复创建浪费资源。

2、每次抽奖都需随机产生一个新的随机数,故需将产生随机数定义在里层循环内部。

3、因为抽奖机会是随机的,所以无需用户再次从控制台输入数据,直接对产生随机数进行判断即可。

4、判断完产生的随机数后,需继续执行循环,无需使用break结束循环。

具体内容请查看下方截图,注释中有相关解析。如下所示:

http://img1.sycdn.imooc.com//climg/60e27e7409a2b5be12851008.jpg

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;//结束当前循环,进入下一轮循环
    }
}

祝学习愉快~


  • 想要每次抽奖的时候停顿一下再输出循环要如何实现呢

    2021-07-05 12:28:10
  • 想要每次抽奖的时候停顿一下再输出循环要如何实现呢

    2021-07-05 17:12:35
  • 同学你好,是想要在每次抽奖前停顿一下,根据输入内容来决定抽奖结果吗?如果是,可做如下修改:

    http://img1.sycdn.imooc.com//climg/60e2ce7209a4a9d307260652.jpg

    祝学习愉快~


    2021-07-05 17:18:57
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师