2011-04-05 124 views
0

我嵌套的if else不起作用。嵌套,如果其他人不工作

下面是代碼:

if(s.getSelectedItem().toString().equals("Margherita")){ 
    if(s1.getSelectedItem().toString().equals("Personal")){ 
     rowbill=65*n; 
    } 
      if(s1.getSelectedItem().toString().equals("Medium")){ 
     rowbill=125*n; 
    } 
      if(s1.getSelectedItem().toString().equals("Family")){ 
     rowbill=240*n; 
    } 

}else if(s.getSelectedItem().toString().equals("Simply Veg")){ 
    if(s1.getSelectedItem().toString().equals("Personal")){ 
     rowbill=75*n; 
    } 
    if(s1.getSelectedItem().toString().equals("Medium")){ 
     rowbill=145*n; 
    } 
    if(s1.getSelectedItem().toString().equals("Family")){ 
     rowbill=285*n; 
    } 
}else if(s.getSelectedItem().toString().equals("Veggie Crunch")){ 
    if(s1.getSelectedItem().toString().equals("Personal")){ 
     rowbill=100*n; 
    } 
    if(s1.getSelectedItem().toString().equals("Medium")){ 
     rowbill=195*n; 
    } 
    if(s1.getSelectedItem().toString().equals("Family")){ 
     rowbill=350*n; 
    } 
} 
+0

理想的情況下它應該工作。 – Sandy 2011-04-05 09:41:55

+0

這是一個'if else'或'if else if'語句 – 2011-04-05 09:42:34

+0

你能寫一個小測試用例來證明爲什麼這種方法不起作用嗎? – 2011-04-05 09:46:11

回答

2

正如你可能還沒有發現與編譯器出現故障時,故障是由於你的結構。

通過刪除else來簡化它。是的,每次最多可以多做兩個String equals()。你可以做到。

把它寫成

System.out.println("Marguerite"); 
if (s.getSelectedItem().toString().equals("Marguerite")) { 
    System.out.println("Marguerite"); 
    .... 
} 
if (s.getSelectedItem().toString().equals("Simply Veg")) { 
    System.out.println("Simply Veg"); 
    .... 
} 

錯誤會那麼容易被發現。一旦解決,你可以回到嵌套的if-else,如果你想。

+0

仍然沒有工作...... :( – mohit 2011-04-05 09:57:54

+2

如果你打算去打印東西的努力.. 。也許你應該嘗試在你的if塊之前打印出s.getSelectedItem()。toString()以確保你的微調器正在返回期望值 – forsvarir 2011-04-05 09:59:15

+0

ya我已經這麼做了...... Spinners返回正確的值......唯一的問題 – mohit 2011-04-05 10:02:13

0

我認爲在某處丟失或多餘的'{','}'。

可能是一個邏輯錯誤,因爲編譯器不顯示錯誤或警告。

+0

ya即使我認爲這是問題,但我覺得語法沒問題......括號已經正確縮進 – mohit 2011-04-05 10:00:23

+0

@mohit:如果你換了你的第二塊如果與你的冷杉塊(先檢查'Simply Veg'而不是'Marguerita''Marguerita'是否仍然有效? – forsvarir 2011-04-05 10:01:55

+0

是的,我也嘗試過...瑪格麗塔的作品...剩下的不要.. :( – mohit 2011-04-05 10:05:06

0

它可能工作...

`if(s.getSelectedItem().toString().trim().equals("Margherita")){ 
if(s1.getSelectedItem().toString().trim().equals("Personal")){ 
    rowbill=65*n; 
} 
else if(s1.getSelectedItem().toString().trim().equals("Medium")){ 
    rowbill=125*n; 
} 
else if(s1.getSelectedItem().toString().trim().equals("Family")){ 
    rowbill=240*n; 
} 

}else if(s.getSelectedItem().toString().trim().equals("Simply Veg")){ 
if(s1.getSelectedItem().toString().trim().equals("Personal")){ 
    rowbill=75*n; 
} 
else if(s1.getSelectedItem().toString().trim().equals("Medium")){ 
    rowbill=145*n; 
} 
else if(s1.getSelectedItem().toString().trim().equals("Family")){ 
    rowbill=285*n; 
} 
}else if(s.getSelectedItem().toString().trim().equals("Veggie Crunch")){ 
if(s1.getSelectedItem().toString().trim().equals("Personal")){ 
    rowbill=100*n; 
} 
else if(s1.getSelectedItem().toString().trim().equals("Medium")){ 
    rowbill=195*n; 
} 
else if(s1.getSelectedItem().toString().trim().equals("Family")){ 
    rowbill=350*n; 
} 
}`