2011-12-14 53 views
0

如何在兩個選項之間進行選擇?適用於IF的正確的系列變量與變量

if ((one_spinner.getSelectedItem().toString() 
        .equals("one"))) { 
       double one_thing = new Double(one.getText() 
         .toString()); 
       double two_thing = one_thing * 5; 

      } else { 
       double two_thing = new Double(one.getText() 
         .toString()); 
       double one_thing = two/5; 
      } 
+3

這似乎是正確的。那麼問題是什麼? – Tudor 2011-12-14 17:10:43

+0

@Tudor:推測變量的範圍僅限於if-else塊內部。 – 2011-12-14 17:11:47

+0

我認爲他們擔心one_spinner只能是「one」或「two」,而「else」不能完全執行此操作。但我不確定我是否也理解這個模糊的問題。 – 2011-12-14 17:12:42

回答

2

假設你要引用one_thingtwo_thingif語句之後,你需要的if語句之前聲明它們,所以他們仍然在範圍內:

double one_thing; 
double two_thing; 
if (one_spinner.getSelectedItem().toString().equals("one")) { 
    one_thing = Double.parseDouble(one.getText().toString()); 
    two_thing = one_thing * 5; 
} else { 
    two_thing = Double.parseDouble(one.getText().toString()); 
    one_thing = two_thing/5; 
} 

請注意,這可以消除冗餘代碼的條款被簡化:

double parsedValue = Double.parseDouble(one.getText().toString()); 

double one_thing; 
double two_thing; 
if (one_spinner.getSelectedItem().toString().equals("one")) { 
    one_thing = parsedValue; 
    two_thing = one_thing * 5; 
} else { 
    two_thing = parsedValue; 
    one_thing = two_thing/5; 
} 

或者,考慮到兩者之間的關係始終是5倍:

double one_thing = Double.parseDouble(one.getText().toString()); 
if (one_spinner.getSelectedItem().toString().equals("one")) { 
    one_thing = one_thing/5; 
} 
double two_thing = one_thing * 5; 

注意,通常這些名稱將順便說一句,請問oneThingtwoThing

3

一種可能性是使用條件運算符:

double a = condition ? option1 : option2; 
double b = condition ? option3 : option4;