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

使用Java的switch函数实现字符串转电话数字转换器的问题

单词转电话键盘数字问题修复

错误原因拆解

1. add(int)方法不存在

你用的int[] myArr是Java数组,数组是固定长度的容器,没有add()方法——这个方法是ArrayList这类动态列表才有的。数组只能通过myArr[index] = value的方式赋值,且前提是已初始化足够长度的数组。

2. myArr无法访问

  • myArr是你自定义的非入口main方法里的局部变量,真正的程序入口主方法根本无法访问它。
  • 更致命的是,Java的程序入口主方法签名是固定的public static void main(String[] args),你写的public static int main(int[] wordList, char t)不是合法的入口方法,且逻辑混乱(比如把char类型的j赋值给int数组wordList[i],存在类型不匹配问题)。

修正后的实现

你的核心思路(遍历字符+映射数字)没问题,但可以用更简洁的方式实现——直接拼接字符串比用数组/列表更贴合需求(毕竟最终要的是连续数字串)。

完整可运行代码

import java.util.Scanner;

public class PhoneWordConverter {

    // 把单个字母转成对应电话数字
    private static char getPhoneDigit(char c) {
        // 统一转大写,减少case分支数量
        char upper = Character.toUpperCase(c);
        switch (upper) {
            case 'A', 'B', 'C' -> return '2';
            case 'D', 'E', 'F' -> return '3';
            case 'G', 'H', 'I' -> return '4';
            case 'J', 'K', 'L' -> return '5';
            case 'M', 'N', 'O' -> return '6';
            case 'P', 'Q', 'R', 'S' -> return '7';
            case 'T', 'U', 'V' -> return '8';
            case 'W', 'X', 'Y', 'Z' -> return '9';
            default -> return c; // 非字母字符原样返回,可根据需求调整处理逻辑
        }
    }

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("输入单词:");
        String inputWord = input.nextLine();

        StringBuilder result = new StringBuilder();
        // 遍历每个字符并转换为对应数字
        for (char ch : inputWord.toCharArray()) {
            result.append(getPhoneDigit(ch));
        }

        System.out.println("转换结果:" + result);
        input.close();
    }
}

核心优化点

  • 用StringBuilder拼接结果:比数组操作更高效,直接得到目标格式的数字字符串,无需额外转换。
  • 提取单独映射方法:让主方法逻辑更清晰,代码复用性更强。
  • 简化switch语法:利用Java 12+的多case写法,比原代码的重复case更简洁。
  • 规范命名:类名、方法名都有明确意义,符合Java编码规范。

测试效果

输入:Software
输出:转换结果:76389273

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 02:31:32