2017-10-18 99 views
0

我在這裏做的是試圖生成一個數字,並查看它是否與數組中的數字相同。如果相同,則系統將重新生成,直到號碼是唯一的。獲取循環內的隨機值

Random randomno = new Random(); 
int r = randomno.nextInt(3); 

TextView randomnumber = (TextView) findViewById(R.id.TVRno); 

int[] arr = new int[2]; 
arr[0] = 0; 
arr[1] = 2; 

for(int i = 0; i < arr.length; i++){ 
    if(r == arr[i]){ 
     z = randomno.nextInt(3); 
     i = 0; 
    } 
} 

randomnumber.setText("" + z); 

但最終我無法打印在for循環變量z。如何打印變量z?我是否使用錯誤的方法來做到這一點?

+0

你的意思是打印到控制檯? – Russiancold

+0

@Russiancold我在Android模擬器中打印它 –

+0

嗨,如果你們想爲-1的問題,不要只是簡單地點擊-1。請讓我知道這個問題有什麼問題,這樣我下次可以改進:D。 –

回答

1

變量z這裏超出了範圍。這就是所謂的塊變量,它只能從循環中訪問。外面訪問它,它需要一個循環之外進行聲明:

Random randomno = new Random(); 

int r = randomno.nextInt(3); 

TextView randomnumber = (TextView) findViewById(R.id.TVRno); 

int[] arr = new int[2]; 

arr[0] = 0; 

arr[1] = 2; 

int z = 0; 

      for(int i = 0; i < arr.length; i++){ 
       if(r == arr[i]){ 
        z = randomno.nextInt(3); 
        i = 0; 
       } 
      } 
randomnumber.setText("" + z); 

再來看,它似乎並不認爲你曾否初始化z,室內還是室外。你的代碼崩潰了嗎?如果是這樣,那就是爲什麼。

附註:您可以初始化數組是這樣的:int arr = new int[] {0,20};

+0

如果r是0,你有一個無限循環。 – halber

+0

@halber好點,但是在原始代碼中。 – Peril

+0

即使我在循環外部聲明瞭變量z,它表明它可能沒有被初始化。 –