烦请老师指正和提出改进意见~
老师我写了两种,但是不知道哪个更符合作业要求,我猜测作业应该有个隐含条件:每人三次抽奖机会,但是一旦抽中了,剩余的抽奖机会就作废了。
第一种代码:
package imooc_redo_exercise;
import java.util.Scanner;
public class Exerccise8_2 {
public static void main(String[] args) {
System.out.println("Please enter the customer's total amount of spending:");
Scanner sc = new Scanner(System.in);
float sum = sc.nextFloat();
if(sum >= 100.0) {
System.out.println("Congratulations! You got the chance to win a prize!");
for(int i = 1; i <= 3; i++) {
int num = (int) (Math.random()*3 + 1);
System.out.println("num=" + num);
if (num == 1) {
System.out.println("Congratulations! You got a keyboard!");break;
}else if(num ==2) {
System.out.println("Congratulations! You got a kettle!");break;
}else if(num ==3) {
System.out.println("Congratulations! You got a souvenir!");break;
}else {
System.out.println("You got nothing! Wish you good luck next time");
}
}
}else {
System.out.println("Sorry! You are unqualified to participate in the activity!");
}
}
}
第二种代码:
package imooc_redo_exercise;
import java.util.Scanner;
public class Exercise8_2_2 {
public static void main(String[] args) {
System.out.println("Please enter the customer's total amount of spending:");
Scanner sc = new Scanner(System.in);
float sum = sc.nextFloat();
int i = 1;
int num;
if (sum >= 100.0) {
System.out.println("Congratulations! You got the chance to win a prize!");
do {
num = (int) (Math.random() * 3 + 1);
System.out.println("num=" + num);
switch (num) {
case 1:
System.out.println("Congratulations! You got a keyboard!");
break;
case 2:
System.out.println("Congratulations! You got a kettle!");
break;
case 3:
System.out.println("Congratulations! You got a souvenir!");
break;
default:
System.out.println("Congratulations! You got a souvenir!");
break;
}
i++;
} while ((i <= 3) && (num == 0));
} else {
System.out.println("Sorry! You are unqualified to participate in the activity!");
}
}
}
44
收起
正在回答
2回答
同学你好,作业要求,当充值会员满百元,每人都有三次抽奖机会。但是同学的代码中有点问题:
在第一种方法中,if后有break,执行if后会跳出循环,不能执行三次。

另外(int)(Math.random()*3)+1的结果是1,2,3三个整数,永远不会执行else中的内容。
修改意见:建议去掉break;另外建议将(int)(Math.random()*3)+1改为(int)(Math.random()*4),即随机出现0,1,2,3四个数。
第二种方法中,num=(int)(Math.random()*3)+1的结果是1,2,3三个整数,num永远不为0,所以不满足do-while()中的循环条件,导致执行一次就不再执行。
修改意见:建议将int)(Math.random()*3)+1改为(int)(Math.random()*4),即随机出现0,1,2,3四个数。另外do-while()循环条件中,去掉num==0的判断。
祝学习愉快~
2023版Java工程师
- 参与学习 人
- 提交作业 8810 份
- 解答问题 9886 个
综合就业常年第一,编程排行常年霸榜,北上广深月薪过万! 不需要基础,无需脱产即可学习,只要你有梦想,想高薪! 全新升级:技术栈升级(包含VUE3.0,ES6,Git)+项目升级(前后端联调与功能升级)
了解课程

恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星