2017-05-01 77 views
2

我必須創建一個抽獎遊戲,您隨機生成六個模擬彩票的獲獎號碼。要求用戶輸入六個數字,看看他們是否贏彩票!使用陣列的Java抽獎

我做了很多,但現在我卡住了。我對Java真的很陌生,所以原諒我。當它提示要求另一個號碼時,它會顯示它,但仍顯示它顯示的自制樂透選擇。另外,當顯示計算機制作的樂透選號的數字時,它們是重複的相同數字,並且不是6個數字。櫃檯不起作用,這可能是一件小事,但我無法弄清楚。謝謝

package arraysIntroduction; 

import java.util.Scanner; 

public class sizeQuestion { 

public static void main(String[] args) { 

    Scanner in = new Scanner (System.in); 

    int [] user =new int [6]; 
    int i; 
    //Fill user array 

     System.err.println("Welcome to Miwand's Lottery"); 
     System.out.println("Please enter your 6 desiered number to enter the lottery"); 
     System.out.println("Pick from 1 to 49"); 

    for ( i=0;i<user.length;i++) // gets numbers until it equals 6 
    { 
     System.out.println("Number:"); 

     user[i]= in.nextInt(); // Gets numbers from user 

     while (user[i] < 0) // if its a negative number tell user to enter again 
     { 
     System.err.println("Negative number, please enter again:"); 
     user[i]=in.nextInt(); 
     } 

if (user[i] > 49) // if the number goes past 49 prompt again 
{ 
    System.err.println("Please enter numbers from 1 - 49"); 
    } 
} 


    //print out the numbers generated 
    for (i=0;i < user.length; i++){ 
     System.out.print(+user[i]+ " ");  

    } 

System.out.println(" "); 

int[] lottery = new int[6]; 

int guesses; 
int counter=0; 
int j; 
int x; 
    { 
for (j = 0; j < 6; j++) { 
int randomNum = (int) (Math.random() *49 +1); // Random number created here. 
for (x = 0; x < j; x++) { 
    if (lottery[x] == randomNum) // Here, code checks if same random number generated before. 
    { 
     randomNum = (int) (Math.random() *49 +1);// If random number is same, another number generated. 
    } 
    lottery[j] = randomNum; 
} 
} 



//prints out computer generated numbers 

for (i = 0; i < lottery.length; i++){ 
for (x = 0; x< j; x++){ 
System.out.print(lottery[i] + " "); 
if (user[i] == lottery[x]){ 
    counter++; 
    } 
} 
} 
    } 
if (counter < 2){ 

    System.out.println("Try again!"); 
} 

if (counter == 3){ 

    System.out.println("3 numbers matched! You won $300!"); 
} 

if (counter == 4){ 

    System.out.println("4 numbers matched! You won 500!"); 
} 

if (counter == 5){ 

    System.out.println(" 5 numbers matched! You won $1000!"); 
} 

else if (counter == 6){ 

    System.out.println("JACCKKKPOOOOTTTTTTT!!!!!! YOU WIN 1 MILLION DOLLARS!"); 
    } 
} 
     } 
+2

的Java = JavaScript的 – msanford

+0

對不起,什麼? Im new –

+0

我注意到了,歡迎來到StackOverflow!你爲這個問題添加了'javascript'標記,但你的問題是關於Java的;他們沒有任何關係。 (我把它刪除:)) – msanford

回答

1

我看到了你的程序多個問題。

首先,打印問題可以通過從內環路print語句移動到外環

for (i = 0; i < lottery.length; i++) { 
    System.out.print(lottery[i] + " "); 
    for (x = 0; x < j; x++) { 
     if (user[i] == lottery[x]) { 
      counter++; 
     } 
    } 
} 

而且可以解決,你是不是正確分配第一隨機數,它總是使用默認值,即是0

解決方案:

for (j = 0; j < 6; j++) { 
    int randomNum = (int) (Math.random() * 49 + 1); // Random number created here. 
    for (x = 0; x < j; x++) { 
     if (lottery[x] == randomNum) // Here, code checks if same random number generated before. 
     { 
      randomNum = (int) (Math.random() * 49 + 1);// If random number is same, another number generated. 
     } 
    } 
    lottery[j] = randomNum; 
} 

另外,你還沒有檢查計數器等於2

解決方案:

if (counter <= 2) { 
    System.out.println("Try again!"); 
} 

而且,在邏輯 「如果隨機數是一樣的,生成的另一號碼。」可能不正確,因爲它可能會再次生成相同的數字。你需要一個while循環來生成一個新的數字,直到它不等於任何生成的數字。

有關編碼風格的另一件事是,對於任何 「for循環」

此:

int i=0; 
for (i = 0; i < length; i++) 

應該是這個替代:

for (int i = 0; i < length; i++) 
0

正如我在評論中所說的,你應該將print語句從內部循環移動到外部循環。

您的代碼應該是這樣的:

for (i = 0; i < lottery.length; i++) { // outer loop 
    System.out.print(lottery[i] + " "); 
    for (x = 0; x < j; x++) {   // inner loop 
     if (user[i] == lottery[x]) { 
      counter++; 
     } 
    } 
}