java 制作彩票申请:用随机数填充数组

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/16246694/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-31 22:22:57  来源:igfitidea点击:

Making a lottery application: fill array with random numbers

javaclassrandomstatic

提问by Steven Eck

I am making a lottery application in Java. My problem is that I think everything is in place and it (the IDE) is telling me that "int lotteryNumbersCount = Eck_LotteryClass.getLotteryNumbers().length;" needs to be static. So I change it to a static int and then I have to change it again in my class. Problem is when I finally run it I get all 0's for my random lottery data. Please help me find the errors in my ways. Total newb here and I've been looking online here but I want to try to figure it out without just copying code somewhere.

我正在用 Java 制作一个彩票应用程序。我的问题是我认为一切都已就位,它(IDE​​)告诉我“ int lotteryNumbersCount = Eck_LotteryClass.getLotteryNumbers().length;”需要是静态的。所以我将它更改为静态 int,然后我必须在我的班级中再次更改它。问题是当我最终运行它时,我的随机彩票数据全部为 0。请帮我找出我的方法中的错误。这里完全是新手,我一直在这里在线查找,但我想尝试弄清楚,而不仅仅是在某处复制代码。

Eck_LotteryClass

Eck_LotteryClass

import java.util.Random;



public class Eck_LotteryClass {
//instance field
private  int lotteryNumbers [];


//Create random lottery numbers method array
public  int [] getRandomNumbers(){
    lotteryNumbers = new int [5];
    Random r = new Random();
    for(int i = 0; i < 5; i++)
        lotteryNumbers[i] = r.nextInt(10);

    return lotteryNumbers;
}



public int compareNumbers(int[] usersNumbers) {

            int matchedNums = 0;
            if (usersNumbers.length == lotteryNumbers.length) {
                for (int i = 0; i < lotteryNumbers.length; i++) {
            if (usersNumbers[i] == lotteryNumbers[i]) {
                matchedNums ++;
                    }
                }
            }

            return matchedNums;}

// Display the random lottery numbers for the user
public int [] getLotteryNumbers() {
    return lotteryNumbers;
}




}

Eck_LotteryTester

Eck_LotteryTester

import java.util.Scanner;
import java.util.Arrays;


public class Eck_LotteryTester{

public static void main(String[] args) {

    Eck_LotteryClass lottery = new Eck_LotteryClass();

    int lotteryNumbersCount = Eck_LotteryClass.getLotteryNumbers().length;

    System.out.println("The Pennsylvania Lottery\n");
    System.out.println("There are " + lotteryNumbersCount
            + " numbers in my lottery, they are 0 through 9. "
            + "See if you can win big CASH prizes!!!\n");

    // Asks the user to enter five numbers.
    Scanner keyboard = new Scanner(System.in);
    int numbers[] = new int[lotteryNumbersCount];

    for (int index = 0; index < numbers.length; index++) {
        System.out.print(String.format("Enter Number %d: ", index + 1));
        numbers[index] = keyboard.nextInt();
    }

    // Display the number of digits that match the randomly generated
    // lottery numbers.

    int match = lottery.compareNumbers(numbers);

    if (match == lotteryNumbersCount) {

        // If all of the digits match, display a message proclaiming the
        // user a grand prize winner.
        System.out.println("\nYOU WIN, GO SEE D. LEETE FOR YOUR GRAND PRIZE!!!");

    } else {

        System.out.println("\nThe winning numbers are " +  Arrays.toString(Eck_LotteryClass.getLotteryNumbers()) + 
                "\nYou matched " + match + " number(s).");

    }

  }
}

回答by DigCamara

Change

改变

  int lotteryNumbersCount = Eck_LotteryClass.getLotteryNumbers().length;

to

  int lotteryNumbersCount = lottery .getLotteryNumbers().length;

and you won't have to change the methods signature to static. Also you'll be talking about the same variable.

并且您不必将方法签名更改为静态。您还将谈论相同的变量。

Also change

也变

// Display the random lottery numbers for the user
public int [] getLotteryNumbers() {
    return lotteryNumbers;
}

to

    // Display the random lottery numbers for the user
public int [] getLotteryNumbers() {
    return getRandomNumbers();
}

So the array gets initialized. And changing the signature of

所以数组被初始化。并更改签名

public  int [] getRandomNumbers

to

private  int [] getRandomNumbers

wouldn't hurt

不会痛

回答by Harsh Kevadia

package New_list;
import java.util.Scanner;
import java.util.Random;

public class Lottery {
    private static Scanner scan;

    public static void main(String[] args) {
        System.out.println("\t\t\tWelcome to Harsh Lottery System.\n");
        Random random = new Random();
        int lottery_win_1 = random.nextInt(10);
        // Print Lottery winning number...1 :P
        // System.out.println(lottery_win_1 + "\n");
        int lottery_win_2 = random.nextInt(10);
        // Print Lottery winning number...2 :P
        // System.out.println(lottery_win_2 + "\n");
        boolean loop = true;
        while(loop){
            System.out.println("\t\t\tEnter your 2 Digit Lottery number.\n");
            scan = new Scanner(System.in);
            int lottery_no = scan.nextInt();
            if ((lottery_no >= 0) && (lottery_no <= 99)) {
                int lottery_no_1, lottery_no_2;
                if (lottery_no > 9) {
                    lottery_no_1 = lottery_no / 10;
                    lottery_no_2 = lottery_no % 10;
                } else {
                    lottery_no_1 = 0;
                    lottery_no_2 = lottery_no;
                }
                if ((lottery_win_1 == lottery_no_1)
                    && (lottery_win_2 == lottery_no_2)) {
                    System.out
                        .println("\t\t\tCongratulation you win lottery,and you win 000.\n");
                } else if ((lottery_win_1 == lottery_no_2)
                           && (lottery_win_2 == lottery_no_1)) {
                    System.out
                        .println("\t\t\tCongratulation your inverse no is lottery winer number so that you win 00.\n");
                } else if ((lottery_win_1 == lottery_no_1)
                           || (lottery_win_1 == lottery_no_2)
                           || (lottery_win_2 == lottery_no_1)
                           || (lottery_win_2 == lottery_no_2)) {
                    System.out
                        .println("\t\t\tCongratulation your one digit from your lotter number match to the lottery winner.so you win 00.\n");
                } else {
                    System.out.println("\t\t\tSorry,Please try again\n");
                    System.out.println("\t\t\tDo you want to try again\n\t\t\tPress 1 for Continue\n\t\t\tPress 2 for exit\n");
                    int ch = scan.nextInt();
                    switch(ch){
                    case 1: System.out.println("\t\t\tOk...Try again\n");
                        break;
                    case 2: System.out.println("\t\t\tBbye... See you later\n");
                        loop = false;
                        break;
                    }
                }
            } else {
                System.out.println("\t\t\tSorry,Please choose 2 digit number\n");
            }
        }
    }
}