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

Java程序for循环未返回数组各索引对应不同值的问题排查

问题分析与修复方案

核心错误点

  • getNumber方法提前返回,仅处理第一个字符
    原代码第一个for循环里,刚完成第一个字符的数值赋值就执行return intArray[i];,导致方法直接跳出,后续字符的处理逻辑完全不会运行,每次调用都只返回第一个字符的数值。
  • main方法逻辑重复调用错误
    main里的while循环每次都传入整个字符串调用getNumber,而getNumber只会返回第一个字符的结果,循环多少次就重复输出多少次第一个字符的数值,自然所有输出都一样。

修复后的代码

import java.util.Scanner;

public class StringtoNumber {
    // 单个字符转对应数字的方法
    public static int getNumber(char c) {
        // 统一转大写,减少重复case判断
        switch (Character.toUpperCase(c)) {
            case 'A': case 'B': case 'C':
                return 2;
            case 'D': case 'E': case 'F':
                return 3;
            case 'G': case 'H': case 'I':
                return 4;
            case 'J': case 'K': case 'L':
                return 5;
            case 'M': case 'N': case 'O':
                return 6;
            case 'P': case 'Q': case 'R': case 'S':
                return 7;
            case 'T': case 'U': case 'V':
                return 8;
            case 'W': case 'X': case 'Y': case 'Z':
                return 9;
            default:
                return 0; // 处理非字母输入
        }
    }

    // 直接将整个字符串转换为加密数字的方法(用long避免溢出)
    public static long getEncryptedNumber(String word) {
        long result = 0;
        for (char c : word.toCharArray()) {
            result = result * 10 + getNumber(c);
        }
        return result;
    }

    public static void main(String[] arg) {
        Scanner input = new Scanner(System.in);
        System.out.println("what word do you want to encrypt");
        String word = input.nextLine();
        
        // 方式1:逐个输出每个字母对应的数字
        for (char c : word.toCharArray()) {
            System.out.print(getNumber(c));
        }
        System.out.println();
        
        // 方式2:直接输出完整的加密数字
        System.out.println(getEncryptedNumber(word));
    }
}

修复说明

  1. 拆分原getNumber方法,让它专门处理单个字符,避免提前返回的问题,同时通过转大写简化case判断。
  2. main方法改为遍历字符串的每个字符,逐个调用getNumber,确保每个字母都被正确转换。
  3. 新增getEncryptedNumber方法,直接生成完整的加密数字,使用long类型避免字符串过长时int溢出的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 13:15:56