2015-05-19 64 views
1

使用相同的INT我試圖創建一個簡單的抽獎遊戲:兩個不同的循環

import java.util.Random; 
import java.util.Scanner; 

public class Main { 

public static void main(String[] args) { 
    Random gen = new Random(); 
    Scanner scan = new Scanner(System.in); 
    System.out.println("Enter desired numbers to be drawn"); 
    int print = scan.nextInt(); 
    System.out.println("Enter desired numbers on dice"); 
    int dice = scan.nextInt(); 
    System.out.println("Enter your lucky numbers"); 
    for(int i=1; i<=print;i++){ 
     int num = scan.nextInt(); 
    } 
    int randnum; 
    if (randnum == num){ 
     System.out.println("Winner winner chicken dinner!"); 

    } 
    for(int counter=1; counter<=print;counter++){ 
     randnum = 1+gen.nextInt(dice); 
     System.out.println(randnum + " "); 

    } 
} 

}

問題是,INT NUM不能在如果循環被解析爲變量。 謝謝

回答

1

只需在循環之前聲明int num。您將需要初始化它,使它在一定的情況下分配循環體不會執行:

int num = 0; 
for(int i=1; i<=print;i++){ 
    num = scan.nextInt(); 
} 

但是,好像你正在試圖收集多個號碼。你的循環讀取print數字,只記得最後一個。你可能會考慮創建一個數組:

int[] numbers = new int[print]; 
for(int i=0; i<print;i++){ 
    numbers[i] = scan.nextInt(); 
} 
+0

是的,它似乎在工作謝謝! –

0

只要把int num循環之前,並指派該值的循環內

int num = 0; 
for(int i=1; i<=print;i++) { 
    num = scan.nextInt(); 
} 

希望這有助於

0

你已經宣佈的範圍numfor loop,所以它不能在for loop以外訪問。看看在Java示波器......你也可能想要將你的if(randum == num)移動到第二個for循環之後,因爲那時randum還沒有初始化...

+0

謝謝。在第二個循環後移動它。它並不打印你贏得勝利,實際上你輸了 –