首页 > 解决方案 > 使用数组和方法的彩票程序(Java)

问题描述

我正在制作一个彩票程序,模拟一个人选择 6 个中奖号码并使用方法抽取中奖号码。

这是一个示例输出

Enter your numbers:

25
31
20
8
47
31

The winning numbers are:
48 16 28 38 46 36

0 out of the 6 numbers you chose are winning numbers, better luck next time!

我的问题是查找总匹配数的方法不起作用,我不知道如何解决它。用户输入的数字和彩票随机数都是数组

这是我的代码:

import java.util.*;

public class Main {

    private static boolean[] lottery;
    private static boolean[] array;

    public static void main(String[] args) {

        getUserNumbers();

        getRandomNumbers();

        getTotalMatchedNumbers();

}


    public static void getRandomNumbers(){

            int[] lottery = new int[6];
            int lotteryNumbers;
        
            for (int i = 0; i < 6; i++) {
                lotteryNumbers = (int) (Math.random() * 50);
                for (int x = 0; x < i; x++) {
                    if (lottery[x] == lotteryNumbers)
                    {
                        lotteryNumbers = (int) (Math.random() * 50);
                        x = -1;
                    }
        
                }
                lottery[i] = lotteryNumbers;
            }
            
            System.out.println("The winning numbers are: ");
            for (int i = 0; i < lottery.length; i++)
                System.out.print(lottery[i] + " ");
        
        }
    

    public static void getUserNumbers(){
        Scanner scanner = new Scanner(System.in);
         
            int[] array = new int[10];  
    
        System.out.println("Enter your numbers: "); 
    
        for(int i=0; i < 6; i++){  
      
            array[i]=scanner.nextInt();  
    
        }  

        System.out.println("You have entered: ");  

        for (int i=0; i < 6; i++){  
            System.out.print(array[i]);  
            System.out.print(" ");
            System.out.println(" ");
           
        }  
    }

    public static void getTotalMatchedNumbers(){

        int matched = 0;
        for(int i = 0; i < 6; i++){
            for(int j = 0;j < 6; j++){
                if(lottery[i] == array[j]){
                        matched = matched + 1;
                }
            }
            if (matched != 6){
                System.out.println(matched + " out of the 6 numbers you chose are winning numbers, better luck next time!");
            }
            else{
                System.out.println("You got picked all the winning numbers! You win!");
            }
        }

    }
}

标签: javaarraysfor-loopinputmethods

解决方案


您应该在与数字相关的方法中使用字段,因为您的数字是在本地方法中生成的,而不是按类生成的。


推荐阅读