Java彩票程序开发:将随机数与用户输入存入Int数组的问题
Hey there! Let's get your lottery program sorted out. First, let's break down your current code and refine it to meet your goal of generating 6 random numbers, storing them in an array, and handling user input properly.
First, Let's Look at Your Initial Code
我正在尝试开发一款彩票程序,需要生成6个随机数字并存入Int数组,同时获取用户输入的号码也存入数组。以下是我目前的尝试:
我的Lottery类代码如下:class Lottery { Random rand = new Random(); // 生成彩票号码 int cpnum; int[] allCpNumbers = new int[100]; // 已下注次数 int betsPlaced; }此外,我用于生成随机数并存入数组的for循环代码如下:
// 打印彩票号码 for(int i = 0; i <= 6; i++) { ...
Refined Lottery Class with Core Functionality
Your initial class has a solid foundation, but we can tweak it to focus on the 6-number requirement and add user input handling. Here's an improved version:
import java.util.Random; import java.util.Scanner; class Lottery { private Random rand = new Random(); private int[] lotteryNumbers = new int[6]; // 存储6个随机彩票号码 private int[] userNumbers = new int[6]; // 存储用户输入的6个号码 private int betsPlaced = 0; // 已下注次数 // 生成6个随机彩票号码的方法 public void generateLotteryNumbers() { // 假设彩票号码范围是1-49,可根据需求调整上限 for(int i = 0; i < 6; i++) { lotteryNumbers[i] = rand.nextInt(49) + 1; } betsPlaced++; // 生成一次号码,下注次数+1 } // 获取用户输入号码的方法 public void getUserNumbers() { Scanner scanner = new Scanner(System.in); System.out.println("请输入你的6个彩票号码(范围1-49):"); for(int i = 0; i < 6; i++) { System.out.print("第" + (i+1) + "个号码:"); userNumbers[i] = scanner.nextInt(); // 可选:这里可以加输入验证,确保号码在有效范围内 } scanner.close(); } // 打印彩票号码的方法 public void printLotteryNumbers() { System.out.print("本期彩票号码:"); for(int num : lotteryNumbers) { System.out.print(num + " "); } System.out.println(); } // 打印用户号码的方法 public void printUserNumbers() { System.out.print("你的投注号码:"); for(int num : userNumbers) { System.out.print(num + " "); } System.out.println(); } }
Key Fixes & Improvements
- Loop Correction: Your original loop used
i <= 6which would generate 7 numbers (since it starts at 0). Changing it toi < 6ensures exactly 6 numbers are created. - Dedicated Arrays: We now have two separate arrays—one for the lottery's random numbers, and one for the user's input—making the code clearer and more focused.
- Random Number Range: Added
rand.nextInt(49) + 1to generate numbers between 1 and 49 (a common lottery range). Adjust the49if your lottery uses a different upper limit. - User Input Flow: Added a
getUserNumbers()method with clear prompts to collect the user's 6 numbers usingScanner. - Encapsulation: Made fields
privateand used methods to handle core actions, which follows better object-oriented programming practices.
How to Test the Class
You can use a main method to run the program:
public class LotteryMain { public static void main(String[] args) { Lottery lottery = new Lottery(); lottery.generateLotteryNumbers(); lottery.getUserNumbers(); lottery.printLotteryNumbers(); lottery.printUserNumbers(); System.out.println("累计下注次数:" + lottery.betsPlaced); } }
Optional Enhancement: Avoid Duplicate Numbers
If your lottery doesn't allow duplicate numbers in the draw, you can modify the generateLotteryNumbers() method to check for duplicates before adding a number:
public void generateLotteryNumbers() { int count = 0; while(count < 6) { int num = rand.nextInt(49) + 1; boolean isDuplicate = false; // 检查当前数字是否已存在于数组中 for(int i = 0; i < count; i++) { if(lotteryNumbers[i] == num) { isDuplicate = true; break; } } if(!isDuplicate) { lotteryNumbers[count] = num; count++; } } betsPlaced++; }
That should cover everything you need to get your lottery program up and running smoothly!
内容的提问来源于stack exchange,提问作者Tomhass

