如何将指定单词分为单数、复数两列?Java实现求助
解决方案
问题分析
你需要将给定的单词按单数形式和复数形式(末尾带大写S)分成两列,之前的代码错误地处理了大小写替换,且没有实现分类逻辑,所以无法达成预期。
可行Java代码实现
import java.util.ArrayList; import java.util.List; public class WordSplitter { public static void main(String[] args) { // 原始单词列表 String[] wordList = {"AntS", "Ant", "BearS", "Bear", "CatS", "Cat", "DogS", "Dog", "FalconS", "Falcon"}; List<String> singular = new ArrayList<>(); List<String> plural = new ArrayList<>(); // 遍历分类单词 for (String word : wordList) { if (word.endsWith("S")) { plural.add(word); // 提取对应单数形式并去重 String singForm = word.substring(0, word.length() - 1); if (!singular.contains(singForm)) { singular.add(singForm); } } else { // 单数单词去重加入列表 if (!singular.contains(word)) { singular.add(word); } } } // 按两列格式输出 System.out.println("单数形式\t复数形式"); System.out.println("---------------------"); for (int i = 0; i < singular.size(); i++) { String singWord = singular.get(i); String pluralWord = singWord + "S"; System.out.printf("%-8s\t%s%n", singWord, pluralWord); } } }
代码说明
- 先定义原始单词数组,用两个
List分别存储去重后的单数和复数单词 - 遍历每个单词,通过
endsWith("S")判断是否为复数形式:- 复数单词直接加入复数列表,同时提取去掉末尾
S的单数形式,去重后加入单数列表 - 单数单词直接去重后加入单数列表
- 复数单词直接加入复数列表,同时提取去掉末尾
- 最后按对齐的两列格式输出,确保单数和复数一一对应
输出结果
单数形式 复数形式 --------------------- Ant AntS Bear BearS Cat CatS Dog DogS Falcon FalconS
内容的提问来源于stack exchange,提问作者mightyboshy
相关产品推荐
相关产品推荐

