You need to enable JavaScript to run this app. Java实现WordPairsList类numMatches方法及匹配单词对统计
优惠活动
大模型
产品
解决方案
定价
更多

Java实现WordPairsList类numMatches方法及匹配单词对统计

Java WordPairsList 代码修复方案

问题定位

  • 构造器嵌套循环判断逻辑错误,导致allPairs始终为空
  • numMatches方法未实现计数逻辑
  • WordPairsList类中冗余定义了getFirst()/getSecond()方法,调用了ArrayList不存在的方法导致编译报错

修复步骤

1. 修复构造器空列表问题

原代码内层循环j从i+1开始,永远无法满足j == i的判断条件,直接删除该无效判断,在嵌套循环中直接生成WordPair对象加入列表即可。

2. 移除冗余错误方法

getFirst()、getSecond()是WordPair类的实例方法,不属于WordPairsList容器类,直接删除这两个方法即可解决编译错误。

3. 实现numMatches计数逻辑

  • 初始化计数器变量为0
  • 遍历allPairs中每一个WordPair对象
  • 调用WordPair的getFirst()、getSecond()方法获取两个单词
  • 注意:字符串内容比较必须使用equals()方法,不能用==,==仅会比较字符串对象的内存地址,无法正确判断内容是否相等
  • 匹配成功则计数器+1,遍历完成后返回计数器值

修正后完整可运行代码

import java.util.*;
    
public class WordPairsList {
    
    private ArrayList<WordPair> allPairs;
    
    public WordPairsList(String[] words)
    {
        allPairs = new ArrayList<WordPair>();
             
        for (int i = 0; i < words.length - 1; i++){
            for (int j = i + 1; j < words.length; j++){
                allPairs.add( new WordPair(words[i], words[j]));
            }
        }
    }
    
    public int numMatches() {
        int count = 0;
        for (WordPair currentPair : allPairs) {
            if (currentPair.getFirst().equals(currentPair.getSecond())) {
                count++;
            }
        }
        return count;
    }
         
    public String toString() {
        return allPairs.toString();
    }
    
    public static void main(String[] args) {
         String[] words = {"Hi", "there", "Tyler", "Sam", "there"};
         WordPairsList list = new WordPairsList(words);
         System.out.println(list);
         System.out.println("The number of matched pairs is: " + list.numMatches());
    }
}
    
class WordPair {
    private String word1;
    private String word2;
    
    public WordPair(String w1, String w2) {
        word1 = w1;
        word2 = w2;
    }

    public String getFirst() {
        return word1;
    }

    public String getSecond() {
        return word2;
    }

    public String toString() {
        return "(" + word1 + ", " + word2 + ")";
    }
}

测试说明

  • 代码中main方法的测试数组新增了一个"there",构造器会自动生成(there, there)的匹配对,最终numMatches返回值为1
  • 可根据需求调整words数组内容验证统计结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.07 12:36:03