2015-05-19 67 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

谢谢。在第二个循环后移动它。它并不打印你赢得胜利,实际上你输了 –