2014-05-21 81 views
0

的變量之外的價值在於它可以使用我的變量值1的值,它是在一個if else語句和必須是外面的等式中插if else語句。如何讓if語句

,我運行該程序,我得到一個0值我變量值1

int value; 
int value1; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_activity3); 

    button1 = (Button)findViewById(R.id.button1); 
    button2 = (Button)findViewById(R.id.button2); 

    final Random r=new Random(); 
    value = r.nextInt(4 - 1 + 1) + 1; 

    if (value == 1) { 
     button1.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       value1 = r.nextInt(4 - 1 + 1) + 1;  
      } 
     }); 
    } else (value == 2) { 
     button2.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       value1 = r.nextInt(4 - 1 + 1) + 1;  
      } 
     }); 
     // equation 
    } 
} 
+0

爲什麼要根據隨機數的值設置你的'OnClickListener'?這根本沒有意義。 – Squonk

+0

你運行過多少次?每次「價值」的價值是多少?如果值> 2,則'value1'將爲'0'。如果你沒有提供一個隨機種子給'r',那麼它可能每次都會產生相同的數字。 – Ruskin

回答

1

你的問題是使用Random類每次。 Random創建僞隨機數序列。每次創建Random的新實例並致電nextInt()時,都會得到相同的編號。要改變這種行爲,你應該使用seed:你作爲參數傳遞給Random()構造函數的任何整數。

,通常人們使用當前時間作爲種子:

Random r = new Random(System.currentTimeMillis()); 
int n = r.nextInt(); 

該代碼將在每個程序調用創建不同的數字。

+0

我不明白這與他的問題有什麼關係? – Einar

+1

這與問題有關。事實上,OP認爲他的問題是從if語句中獲得價值,但實際上他不明白爲什麼變量'value1'總是獲得相同的值。 – AlexR

+0

啊,我明白了。沒想到這樣= = – Einar

0

你想要什麼都可以實現,但是你還有一些其他的問題,你有沒有試過編譯它?

  • 我不認爲value可以永遠是1,而你還沒有處理所有可能的情況下
  • 其他(價值== 2)需要否則,如果(價值== 2),雖然你可能每次

至於你的實際問題,你可以得到值1外,如果使用隨機的結果相同的種子在相同的輸出考慮switch語句

  • ?您已經在if之外聲明變量 - 您已將其聲明爲成員級別,因此您已能夠在課程中的任何位置訪問該變量

  • 1

    要直接回答您的問題:是的,您可以。 看看下面的例子:

    int value = 10; 
    int value1; 
    
    if (value == 10) { 
        value1 = 6; 
    } 
    
    System.out.println("Value1: " + value1); 
    

    這會工作,將給予6輸出正如你可以看到我用if語句之外的價值。