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

使用嵌套FOR循环统计Java字符串右侧相同字符代码求助

问题分析与修正代码

你的代码存在几个关键逻辑错误,导致无法满足需求:

  • 内层循环起始索引错误:要统计右侧(索引更大)的字符,j应该从i+1开始,而非i,否则会把当前字符本身算入统计。
  • 去重逻辑不符合需求:题目要求从左到右检查每个字符并显示各自的右侧相同字符数,不需要对字符去重,比如输入"aab",需要输出a:1、a:0、b:0,而非只输出去重后的结果。
  • 统计计数的逻辑错误:原代码中因为把当前字符算入了count,所以用count-1修正,但调整j的起始索引后,直接统计j从i+1开始的相同字符即可,无需额外减1。
  • 代码中的转义双引号"需要替换为正常的双引号",否则编译会报错。

修正后的代码

import java.util.Scanner;

public class Solution {
    public static void main(String args[]) {
        Scanner scanner = new Scanner(System.in);
        String input = scanner.nextLine();
        
        // 检查输入长度是否合法
        if (input.length() < 1 || input.length() > 25) {
            System.out.println("Invalid Input");
            return; // 终止程序
        }
        
        // 外层循环遍历每个字符
        for (int i = 0; i < input.length(); i++) {
            char currentChar = input.charAt(i);
            int rightCount = 0;
            
            // 内层循环遍历当前字符右侧的所有字符
            for (int j = i + 1; j < input.length(); j++) {
                if (currentChar == input.charAt(j)) {
                    rightCount++;
                }
            }
            
            // 输出当前字符及右侧相同字符数量
            System.out.println(currentChar + ": " + rightCount);
        }
    }
}

代码说明

  1. 输入合法性检查:判断字符串长度是否在1-25之间,不合法则输出错误信息并终止程序。
  2. 嵌套循环逻辑:
    • 外层循环i从0开始,逐个遍历字符串中的每个字符。
    • 内层循环j从i+1开始,遍历当前字符右侧的所有字符,统计与当前字符相同的数量。
  3. 输出结果:每遍历完一个字符的右侧所有字符后,直接输出该字符及其对应的统计数,完全符合题目要求的从左到右输出每个字符的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 00:40:24