使用嵌套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-25之间,不合法则输出错误信息并终止程序。
- 嵌套循环逻辑:
- 外层循环
i从0开始,逐个遍历字符串中的每个字符。 - 内层循环
j从i+1开始,遍历当前字符右侧的所有字符,统计与当前字符相同的数量。
- 外层循环
- 输出结果:每遍历完一个字符的右侧所有字符后,直接输出该字符及其对应的统计数,完全符合题目要求的从左到右输出每个字符的结果。
内容的提问来源于stack exchange,提问作者Berkkaya0304
相关产品推荐
相关产品推荐

