Java如何改写Sales类的if-else逻辑,避免使用System.out.println?
改写Java分支逻辑:用变量存储结果而非直接打印
嘿,我懂你想把那些直接在分支里打印的逻辑改成用变量存储结果的形式——这样代码更灵活,也方便后续复用这些绩效和奖金数据,对吧?我给你两种靠谱的改写方式:
方式一:使用独立变量存储绩效与奖金
这种方式最直接,把原来分支里的打印内容换成给变量赋值,最后统一处理结果:
public class Sales { public static void main(String[] args) { int ursales = 6000; int target = 3000; // 先声明存储结果的变量 String performance; int bonus; // 分支逻辑只负责赋值,不直接打印 if (ursales >= 2 * target) { performance = "Excellent"; bonus = 1000; } else if (ursales >= 1.5 * target) { performance = "Fine"; bonus = 500; } else if (ursales >= target) { performance = "Satisfactory"; bonus = 100; } else { performance = "Unsatisfactory"; // 对应解雇的绩效描述 bonus = 0; } // 统一处理结果(这里可以替换成任何你需要的逻辑,比如存数据库、传给其他方法) System.out.println("performance " + performance); System.out.println("bonus " + bonus); // 单独处理解雇的特殊提示 if (ursales < target) { System.out.println("You Are Fired!"); } } }
方式二:用封装类(Java 16+ Record)统一管理结果
如果你的项目使用Java 16或以上,用Record来封装绩效和奖金会更优雅,让代码结构更清晰:
// 定义一个记录类,专门存储绩效评估结果 record PerformanceResult(String performance, int bonus) {} public class Sales { public static void main(String[] args) { int ursales = 6000; int target = 3000; PerformanceResult result; // 分支逻辑创建对应的结果对象 if (ursales >= 2 * target) { result = new PerformanceResult("Excellent", 1000); } else if (ursales >= 1.5 * target) { result = new PerformanceResult("Fine", 500); } else if (ursales >= target) { result = new PerformanceResult("Satisfactory", 100); } else { result = new PerformanceResult("Unsatisfactory", 0); } // 统一读取并处理结果 System.out.println("performance " + result.performance()); System.out.println("bonus " + result.bonus()); if (ursales < target) { System.out.println("You Are Fired!"); } } }
这两种方式都把分支逻辑和输出逻辑分离开了,你可以在后续任意使用存储好的performance和bonus,而不是把打印硬编码在分支里,完美符合你的需求~
内容的提问来源于stack exchange,提问作者Michael_7
相关产品推荐
相关产品推荐

