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

Java实现三原色混合时If Else分支运行返回多个错误结果如何解决

问题根源
  • 逻辑运算符优先级错误:Java中&&的优先级高于||,你未对判断条件做分组括号,原来的条件input.equals("Red")||input.equals("red")&&input2.equals("Blue")||input2.equals("blue")实际执行逻辑为:只要第一个输入是Red,或者同时满足第一个输入是red且第二个输入是Blue,或者第二个输入是blue,就会触发当前分支,所以只要输入包含任意目标颜色就会匹配到多个分支,出现错误输出。
  • 代码冗余:相同颜色组合的正反输入(如红+蓝、蓝+红)拆分为多个分支判断,没必要重复写逻辑。
  • 大小写判断繁琐:单独判断大小写写法冗余,可直接用忽略大小写的字符串比较方法简化。
修复后代码
import java.util.Scanner;

class Main
{
    public static void main(String[] args) 
    {
        System.out.println("请选择第一种三原色:");
        Scanner color = new Scanner(System.in);
        String input = color.next();
        System.out.println("请选择第二种三原色:");
        String input2 = color.next();
        
        // 红+蓝=紫
        if((input.equalsIgnoreCase("Red") && input2.equalsIgnoreCase("Blue")) 
            || (input.equalsIgnoreCase("Blue") && input2.equalsIgnoreCase("Red")))
        {
            System.out.println("红色和蓝色混合为紫色。");
        }
        // 蓝+黄=绿
        else if((input.equalsIgnoreCase("Blue") && input2.equalsIgnoreCase("Yellow")) 
            || (input.equalsIgnoreCase("Yellow") && input2.equalsIgnoreCase("Blue")))
        {
            System.out.println("蓝色和黄色混合为绿色。");
        }
        // 黄+红=橙
        else if((input.equalsIgnoreCase("Yellow") && input2.equalsIgnoreCase("Red")) 
            || (input.equalsIgnoreCase("Red") && input2.equalsIgnoreCase("Yellow")))
        {
            System.out.println("黄色和红色混合为橙色。");
        }
        else
        {
            System.out.println("请输入有效的三原色。");
        }
        color.close();
   }
}
核心修改说明
  • 给每个判断条件增加分组括号,确保「同时满足两种颜色输入」的逻辑优先级正确,不会出现单匹配一个颜色就触发分支的问题。
  • 使用equalsIgnoreCase方法直接忽略大小写对比字符串,省略了分别判断大小写的冗余代码。
  • 合并相同颜色组合的正反输入判断,分支数量减少一半,逻辑更清晰。
  • 新增了Scanner资源关闭操作,避免资源泄漏。

内容的提问来源于stack exchange,提问作者Christy Pomerleau

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 04:15:03