2013-04-26 22 views
0

我正在用Java製作一個彩票應用程序。我的問題是我認爲一切都已到位,並且它(IDE​​)告訴我「int lotteryNumbersCount = Eck_LotteryClass.getLotteryNumbers().length;」需要是靜態的。所以我將它更改爲一個靜態int,然後我必須在我的類中再次更改它。問題是我最終運行它時,我的隨機彩票數據全部爲0。請幫我找到我的方式錯誤。在這裏總共newb,我一直在這裏看網上,但我想嘗試弄清楚,而不是隻是在某處複製代碼。製作一個彩票應用程序:用隨機數填充數組

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

請解決您的標題。對於試圖通過Google查找您的帖子的用戶來說,這是毫無用處的。 – 2013-04-26 23:39:34

+0

我試圖找出現在,我沒有意識到這將是標題,我認爲這是一個搜索字段 – 2013-04-26 23:42:45

回答

2

變化

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 

不會傷害

+0

非常感謝,我知道我很接近。我想我忘記了當我創建其他課程的實例時,我將它改名爲抽獎。唷! – 2013-04-26 23:46:40

0
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 $10000.\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 $4000.\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 $1000.\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"); 
      } 
     } 
    } 
}