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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 14:20:38