2016-04-22 118 views
0

我試圖使用在「if語句」內創建的值並將其打印在其外部,但創建彈出式窗口卻無法識別它,我不知道爲什麼。有人能幫助我嗎??如何使用if語句中的值?

@Override 
public void onClick (View v){ 
    int sum = uno + dos + tres + cuatro; 
    double pru = sum*8; 
    if(sum == 11){ 
     double tot = pru - (pru*.01); 
     String tot1 = String.valueOf(tot); 
    } 
    if(sum == 12){ 
     double tot = pru - (pru*.02); 
     String tot1 = String.valueOf(tot); 
    } 
    if(sum == 13){ 
     double tot = pru - (pru*.03); 
     String tot1 = String.valueOf(tot); 
    } 
    if(sum == 14){ 
     double tot = pru - (pru*.04); 
     String tot1 = String.valueOf(tot); 
    } 
    if(sum == 15){ 
     double tot = pru - (pru*.05); 
     String tot1 = String.valueOf(tot); 
    } 
    if(sum == 16){ 
     double tot = pru - (pru*.06); 
     String tot1 = String.valueOf(tot); 
    } 
    if(sum == 17){ 
     double tot = pru - (pru*.07); 
     String tot1 = String.valueOf(tot); 
    } 
    if(sum == 18){ 
     double tot = pru - (pru*.08); 
     String tot1 = String.valueOf(tot); 
    } 
    if(sum == 19){ 
     double tot = pru - (pru*.09); 
     String tot1 = String.valueOf(tot); 
    } 
    if(sum >= 20){ 
     double tot; 
     tot = pru - (pru*.1); 
     String tot1 = String.valueOf(tot); 
    } 

print tot1; 

在此先感謝!

回答

5

我建議你閱讀本:https://en.wikipedia.org/wiki/Scope_%28computer_science%29

簡短的回答是,你不能做你想要做的事。當您退出if塊時,出現在if塊中的變量將消失。這被稱爲變量「超出範圍」。

要解決您的問題,請在if塊之外聲明變量。我不會重現你的整個代碼,但它看起來像這樣:

int sum = uno + dos + tres + cuatro; 
double pru = sum*8; 
String tot1 = ""; 
if(sum == 11){ 
    double tot = pru - (pru*.01); 
    tot1 = String.valueOf(tot); 
} 
print tot1; 

只要做到這一點你所有的if語句。

+0

另外請注意,這個特殊的使用情況下,他可以做到這一切基於數學。 –

+0

謝謝!這真的起作用了! – AldoT

1

我建議你定義tot1所有的if語句之外如下:

String tot1; 
if (sum == 10) 
    ... 
    ... 
print tot1; 

現在,你可能會得到tot1可能尚未初始化一個警告 - 你將不得不照顧它(無論是默認值分配給它,或者檢查是否tot1爲null,並且解決它)

2

整個代碼可以降低到幾行通過識別pru變量的mulitplier有這個關係到sum

multiplier = (sum - 10)/100, for 11 <= sum <= 20 

然後,你真正需要的是一個if聲明來處理事情。

@Override 
public void onClick (View v){ 
    int sum = uno + dos + tres + cuatro; 
    double pru = sum*8; 
    String tot1 = ""; 
    if (sum >= 11 && sum <= 20) { 
     double multiplier = (sum - 10)/100.0; 
     double tot = pru - (pru * multiplier); 
     tot1 = String.valueOf(tot); 
    } 

    System.out.println(tot1); 
} 

如果你沒有真的需要所有這些if語句,一個更好的方式來處理這將是使用switch聲明。你可以閱讀關於here

1

給你一個提示:如果你一遍又一遍地重複相同的代碼,你做錯了什麼。編程時,你應該總是有這個句子。

注意:在這個例子中,你應該使用SINGLE if語句。但作爲一個例子來向你展示,在未來,有一種叫做循環的東西!

你的代碼可以是這樣的具有循環:

@Override 
public void onClick (View v){ 
    int sum = uno + dos + tres + cuatro; 
     double pru = sum*8; 
     double tot; 
     String tot1; 
    if(sum >= 20) 
    { 
     double tot; 
     tot = pru - (pru*.1); 
     String tot1 = String.valueOf(tot); 
    } 
    else 
    { 
     for (double x = 11, i = .01; x < 20; x++, i+=0.1) 
     { 
      if (sum == x) 
      { 
       tot = pru - (pru*i); 
       tot1 = String.valueOf(tot); 
      } 
     } 
    } 


print tot1; 

}