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

Java字母反向转换程序重复字母不输出问题修复求助

修复字符串反向字母转换中重复字母不重复输出的问题

你的代码核心问题是逻辑错误:你现在是检查整个字符串里是否包含某个字母,只要存在就输出一次对应的反向字母,完全没处理每个字符的出现次数和输入顺序,所以重复字母只会输出一次,而且输出顺序是固定的A-Z顺序,不是输入的顺序。

修复思路

  1. 放弃逐个定义反向字母变量的冗余写法,利用ASCII码计算反向字母:对于任意大写字母 c,对应的反向字母可以通过公式 (char) ('Z' - (c - 'A')) 直接算出(比如A的ASCII是65,Z是90,90-(65-65)=90即Z,B是66,90-(66-65)=89即Y,以此类推)。
  2. 遍历输入字符串的每一个字符,逐个转换并输出,这样重复字符会被多次处理,输出顺序也和输入一致。

修改后的完整代码

import java.util.Scanner;

public class App {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        System.out.println("Enter the message you would like to see in reverse: ");
        String message = scanner.nextLine().toUpperCase();
        
        // 遍历字符串的每个字符
        for (int i = 0; i < message.length(); i++) {
            char c = message.charAt(i);
            // 只处理大写字母,非字母可以直接输出(如果需要的话)
            if (c >= 'A' && c <= 'Z') {
                char reversedChar = (char) ('Z' - (c - 'A'));
                System.out.print(reversedChar);
            } else {
                // 非字母字符直接输出,比如空格、数字等
                System.out.print(c);
            }
        }
        
        scanner.close();
    }
}

额外优化点

  • 原代码里new String(message).contains("A")完全多余,直接用message.contains("A")就行,没必要重新创建字符串对象。
  • 用单个字符遍历处理,既解决了重复字母的问题,又保证了输出顺序和输入一致,同时代码量大幅减少,可读性更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 23:50:23