折扣程序逻辑异常求助:超500000金额仍触发3%折扣问题
问题分析与修复方案
你的问题出在条件判断的顺序上:所有≥500000的金额肯定也满足≥300000,所以程序会先触发第一个if分支(3%折扣),永远不会走到5%折扣的else if分支。
修正后的代码
if(kb.equals("A")){ nama_buah.setText("Anggur"); hargakg.setText("47000"); String anggur="47000"; int hrganggur=Integer.parseInt(anggur); thargaanggur=hb*hrganggur; harga.setText(Integer.toString(thargaanggur)); // 先判断最严格的高阈值条件 if(thargaanggur >= 500000){ int totaldiskon,totalbayar; totaldiskon=thargaanggur*5/100; diskon.setText("Diskon 5% = " + totaldiskon); totalbayar=thargaanggur-totaldiskon; total_seluruh.setText(Integer.toString(totalbayar)); } else if(thargaanggur >= 300000){ int totaldiskon,totalbayar; totaldiskon=thargaanggur*3/100; diskon.setText("Diskon 3% = " + totaldiskon); totalbayar=thargaanggur-totaldiskon; total_seluruh.setText(Integer.toString(totalbayar)); } else{ total_seluruh.setText(Integer.toString(thargaanggur)); } // 补上原代码缺失的else闭合括号 }
关键说明
对于这种存在包含关系的阈值判断,必须从最严格的条件开始检查:先判断更高的折扣阈值(500000),再判断较低的(300000),这样才不会让宽泛的条件提前拦截掉更严格的规则。
内容的提问来源于stack exchange,提问作者HERI
相关产品推荐
相关产品推荐

