Java字符串字符逐位匹配统计程序开发及代码修正求助
Java字符串对应位置字符匹配统计程序修正
原代码存在几个关键问题,导致无法实现需求:
- 方法名拼写错误:
indexof是错误写法,Java标准方法是indexOf,且此处逻辑完全不对——indexOf(0)是查找ASCII值为0的字符位置,根本不是获取对应索引的字符,应该用charAt() - 仅判断第一个字符,没有遍历所有对应位置完成统计
if语句缺少闭合的},存在语法错误- 输出逻辑混乱:else分支直接输出"All characters match"不符合统计需求,也未处理字符数量的单复数和动词形式变化
下面是修正后的完整代码,可完全实现需求:
import java.util.Scanner; public class LabProgram { public static void main(String[] args) { Scanner in = new Scanner(System.in); String str1 = in.next(); String str2 = in.next(); int counter = 0; // 取两个字符串中较短的长度,防止遍历出现索引越界 int minLength = Math.min(str1.length(), str2.length()); // 逐个对比对应位置的字符,统计匹配数量 for (int i = 0; i < minLength; i++) { if (str1.charAt(i) == str2.charAt(i)) { counter++; } } // 根据统计数量输出符合语法的结果 if (counter == 1) { System.out.println(counter + " character matches"); } else { System.out.println(counter + " characters match"); } in.close(); } }
代码说明:
- 用
Math.min()获取最短字符串长度,确保遍历过程不会超出字符串的索引范围 - 用
charAt(i)直接获取对应位置的字符进行比较,准确统计匹配数量 - 针对统计结果的数量,输出对应的单复数形式和动词变化:1个字符用"character matches",多个字符用"characters match",完全符合示例要求
- 最后关闭Scanner,避免资源泄漏
内容的提问来源于stack exchange,提问作者new coder
相关产品推荐
相关产品推荐

