2011-04-05 123 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; 
} 
}`