0

Javaで宝くじアプリを作っています。int lotteryNumbersCount = Eck_LotteryClass.getLotteryNumbers().length;私の問題は、すべてが整っていると思っているのに、それ (IDE) が " " を静的にする必要があると言っているということです。したがって、それを static int に変更してから、クラスで再度変更する必要があります。問題は、最終的に実行すると、ランダム宝くじデータがすべて 0 になることです。私のやり方でエラーを見つけるのを手伝ってください。ここでまったくの初心者で、ここでオンラインで探していましたが、コードをどこかにコピーするだけでなく、それを理解しようとしています。

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

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).");

    }

  }
}
4

2 に答える 2

1

変化する

  int lotteryNumbersCount = Eck_LotteryClass.getLotteryNumbers().length;

  int lotteryNumbersCount = lottery .getLotteryNumbers().length;

メソッドのシグネチャを静的に変更する必要はありません。また、同じ変数について話します。

また変更

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

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

したがって、配列は初期化されます。そして署名の変更

public  int [] getRandomNumbers

private  int [] getRandomNumbers

傷つけない

于 2013-04-26T23:43:48.913 に答える