首页 > 解决方案 > 遍历数组列表

问题描述

我正在创建一个彩票游戏,它检查用户是否从随机彩票号码中猜出 2、3、4 或 5 个号码,然后打印一条消息。彩票号码从 1 到 100 打印 10 次,用户猜 5 个号码。我已经尝试过for循环和 if 语句,但它没有打印出正确的消息。不要介意变量,因为我只是在测试看看什么是有效的。我的问题是,如何检查用户是否正确猜到了 2 、 3 、 4 或 5 个数字?这是我的代码。

    // first way to check if user guessed correctly 
    
    int  x,y;
    
    for ( int i = 4; i< numbers.length; i++) {
        x = numbers[i];
        for (int j = 0; j < lottery.length; j++) {
            y = lottery[j];
            
            if (x == y) {
                System.out.println("You guessed 5 numbers");
            }
            for ( i = 3; i< numbers.length; i++ ) {
                x = numbers[i];
                
                if ( x == y) {
                    System.out.println("You guessed 4 numbers");
                }
                for ( i = 2; i < numbers.length; i++) {
                    x = numbers[i];
                    
                    if ( x == y) {
                        System.out.println("You guessed 3 numbers");
                    }
                    for ( i = 1; i < numbers.length; i++) {
                        x = numbers[i];
                        
                        if ( x == y) {
                            System.out.println("You guessed 2 numbers");
                        }
                      }
                    }
                }
  
        }
    }

标签: java

解决方案


public static void main(String[] args) {

        int count = 0;
        int[] lottery = new int[5];
        int[] input = new int[5];

        Scanner scanner = new Scanner(System.in);
        System.out.println("Enter 5 number: ");
        for(int i = 0; i < 5; i++) {
            input[i] = scanner.nextInt();
        }

        Random r = new Random();
        for (int i = 0; i < lottery.length; i++) {
            int random = r.nextInt(10); // Upper bound of random generator = 10.
            lottery[i] = random;
            System.out.print(lottery[i]);
        }

        for (int i = 0; i < lottery.length; i++) {
            for (int j = 0; j < input.length; j++) {
                if (lottery[i] == input[j]) {
                    count++;
                }
            }
        }

        if (count == 0) {
            System.out.println("\nToo bad, you have 0 correct guess. Try again!");
        } else if (count == 1) {
            System.out.println("\n1 number guessed correctly! You won $1000!");
        } else if (count == 2) {
            System.out.println("\n2 number guessed correctly! You won $6000!");
        } else {
            // Add condition
        }
    }

这将接收 5 个随机数并将其存储在lottery数组中。程序将提示用户输入 5 个输入数字,将其存储并与 中的每个数字input进行比较。如果两个数字相等,则递增。示例运行:lottery[i]inputcount

Enter 5 number: 
1 2 3 4 5
7 2 5 9 1 
2 number guessed correctly! You won $6000!

请注意,如果随机数生成器创建了两个或更多重复数字,则count意志也会增加。这是一个边缘案例,但我认为如果你想要改进,你可以用谷歌搜索它。

实现这个使用ArrayList也更简单,因为ArrayList有方法contains()可以检查它是否有这样的元素。我们可以if-else为它使用一个简单的循环。我假设 OP 的作业有使用限制,Array因此不使用这种方法。


推荐阅读