老师帮帮我,想了两天了。课程也没看就为了这个题
老师这道题,我有3个需求,但是有一个实现不了。请老师帮我看一下,并指导我怎么改。
代码需求如下:
①让客户输入充值金额
②当充值金额大于等于100,提醒客户获得3次抽奖机会,输入1-100数字
③当客户输入的不是0.1.3.时,会进入循环语句,三次不中,会输出抽奖次数用完。
我的难点:第三个需求实现了前一部分,后一部分:”输出抽奖次数用完“没有实现。老师帮我一把。告诉我问题所在,整个个代码应该怎么改?
我的代码如下:
public static void main(String[] args) {
// 抽奖活动;0未中奖,1一等奖,3三等奖
System.out.println("新年大回馈,充值满100即可获得3次抽奖机会,请输入充值金额");
Scanner s = new Scanner(System.in);
int n = s.nextInt();// n存储充值金额
if (n >= 100) {
int number = (int) (Math.random() * 100 + 1);
int guess;
System.out.println("恭喜您获得3次抽机会,请输入1-100任意数字哦");
// Scanner sc=new Scanner(System.in);
// guess=sc.nextInt();//guess存放输入数字
int count = 3;// count存放抽奖次数
while (count > 0) {
for (count = 3; count > 0; count--) {
Scanner sc = new Scanner(System.in);
guess = sc.nextInt();
System.out.println("还有" + (count-1) + "次机会");
if (count <1) {
System.out.println("抱歉您的次数已用完");break;
}
if (guess == 0) {
System.out.println("很遗憾未中奖,下次再来吧");
break;
}
if (guess == 1) {
System.out.println("恭喜您抽中一等奖---键盘一台");
break;
}
if (guess == 3) {
System.out.println("恭喜您抽中三等奖---纪念品一枚");
break;
}
}
}
System.out.println("很遗憾未中奖");
}
}
}
正在回答
同学你好,根据同学的需求,老师对同学的代码做了简单调整可以使得代码正常运行,调整的位置如下图所示:
1.由于break会直接结束当前循环,所以for循环的count--语句无法等到执行,而将break替换为continue之后,可以正确的执行到for循环的count--语句,这样次数就可以正确减少了;
2.由于当count值变化为0的时候,for循环判断count > 0时为false,所以if(count < 1)的语句永远都没有机会得到执行,所以将次数用尽的代码移动到循环结束会更好。
同学的代码还可以进行优化,优化后的代码如下图所示:
1.使用单层循环即可完成对抽奖次数的控制,所以去掉了外层的while循环;
2.将Scanner的创建放在循坏外,减少Scanner的创建次数;
3.使用switch...case结构替换if结构,可以使代码的可维护性更强。
看到同学对抽奖的系统很有兴趣,老师也根据同学的想法做了一下改良,使得这个游戏更加有趣,代码和注释如下所示:
祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星