Android Studio开发幸运号码APP重复生成相同数字求助
幸运号码APP重复数字问题修复方案
问题根源
你当前的代码仅调用一次随机数生成方法,将同一个数值重复赋值给四个文本控件,导致所有显示的数字完全相同;同时分享功能也只传递了这一个数字,无法满足生成4个独立幸运号码的需求。另外原方法生成的是0-29的数字,不符合你需要的1-30范围。
具体修复步骤
1. 调整随机数生成范围(1-30)
修改generateRandomNumber()方法,确保生成1到30之间的整数:
public int generateRandomNumber() { Random random = new Random(); int upper_limit = 30; // nextInt(30)生成0-29,加1后转为1-30 int randomNumberGenerated = random.nextInt(upper_limit) + 1; return randomNumberGenerated; }
2. 生成四个独立随机数并赋值
在onCreate()方法中,为每个文本控件单独调用随机数生成方法,替换原有的单个变量赋值逻辑:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_lucky_number); // 控件初始化代码保持不变 welcomeTxt = findViewById(R.id.textView2); luckyNumberTxt = findViewById(R.id.lucky_number_txt); luckyNumberTxt1 = findViewById(R.id.lucky_number_txt1); luckNumberTxt2 = findViewById(R.id.lucky_number_txt2); luckyNumberTxt3 = findViewById(R.id.lucky_number_txt3); share_btn = findViewById(R.id.share_number_btn); // 获取用户名代码保持不变 Intent i = getIntent(); String userName = i.getStringExtra("name"); // 生成四个独立的幸运号码 int num1 = generateRandomNumber(); int num2 = generateRandomNumber(); int num3 = generateRandomNumber(); int num4 = generateRandomNumber(); // 分别为四个文本控件赋值 luckyNumberTxt.setText(" " + num1); luckyNumberTxt1.setText(" " + num2); luckNumberTxt2.setText(" " + num3); luckyNumberTxt3.setText(" " + num4); // 修改分享按钮点击事件,传递四个号码 share_btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { shareData(userName, num1, num2, num3, num4); } }); }
3. 修复分享功能,传递全部四个号码
更新shareData()方法,接收四个数字参数并拼接成完整的幸运号码字符串:
public void shareData(String username, int num1, int num2, int num3, int num4){ Intent i = new Intent(ACTION_SEND); i.setType("text/plain"); // 拼接四个幸运号码 String luckyNumbers = num1 + ", " + num2 + ", " + num3 + ", " + num4; i.putExtra(Intent.EXTRA_SUBJECT, username + " 今日好运!"); i.putExtra(Intent.EXTRA_TEXT, "你的幸运号码是:" + luckyNumbers); startActivity(Intent.createChooser(i, "选择分享平台")); }
额外优化建议(可选)
如果需要避免生成重复的幸运号码(比如彩票类号码不重复),可以使用集合存储生成的数字,确保唯一性:
// 生成不重复的四个1-30随机数 Set<Integer> luckySet = new HashSet<>(); while (luckySet.size() < 4) { luckySet.add(generateRandomNumber()); } // 将集合转为数组或列表,再赋值给控件 Integer[] luckyNumbers = luckySet.toArray(new Integer[4]); luckyNumberTxt.setText(" " + luckyNumbers[0]); luckyNumberTxt1.setText(" " + luckyNumbers[1]); luckNumberTxt2.setText(" " + luckyNumbers[2]); luckyNumberTxt3.setText(" " + luckyNumbers[3]);
内容的提问来源于stack exchange,提问作者Offalypops
相关产品推荐
相关产品推荐

