You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

折扣程序逻辑异常求助:超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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 13:55:30