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

Java技术问询:通过用户输入计算索引查找对应光纤颜色

光纤颜色查询代码修正方案

原代码存在的问题

  • 条件判断嵌套错误:input >= 145的判断被包裹在input < 145的if块里,永远无法触发
  • 冗余且错误的for循环:计算出modNum后直接用它作为数组索引就能获取颜色,原循环的终止条件i == fiberColors.length永远不成立(数组长度为12,modNum范围是0-11),导致不会执行输出
  • 缺失非正整数校验:用户输入0或负数时没有错误提示

修正后的代码

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner inputNum = new Scanner(System.in);
        System.out.println("Enter Number...");

        String[] fiberColors = {"Blue", "Orange", "Green", "Brown", "Slate", "White", "Red", "Black", "Yellow", "Violet", "Rose", "Aqua"};

        int input = inputNum.nextInt();

        if (input < 1 || input > 144) {
            System.out.println("Invalid Number/Please enter between 1 and 144");
        } else {
            int modNum = (input - 1) % 12;
            System.out.println(fiberColors[modNum]);
        }
        
        inputNum.close(); // 关闭Scanner资源
    }      
}

修正说明

  1. 重构条件判断:将非法输入(<1或>144)的判断放在一起,合法输入进入else分支处理,逻辑更直观
  2. 移除无用循环:直接通过计算得到的modNum索引数组,一步获取对应颜色并输出
  3. 增加资源释放:调用inputNum.close()关闭Scanner,避免资源泄漏
  4. 优化错误提示:统一非法输入的提示信息,覆盖所有不合法的输入情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 00:00:56