本文共 2065 字,大约阅读时间需要 6 分钟。
为了完成这个任务,我们需要编写一个Java程序,该程序可以从标准输入中读取英文单词,并将它们按长度排序。如果两个单词的长度相同,则按它们的出现顺序输出。这个任务可以通过使用Java的小程序框架来实现。
我们从标准输入读取数据,直到遇到标志性字符'#'。在读取过程中,我们将每个单词存储在一个字符串列表中。
import java.util.ArrayList;import java.util.Comparator;import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); ArrayList words = new ArrayList<>(); while (scanner.hasNext("#")) { String word = scanner.next(); words.add(word); } 我们需要按照单词的长度进行排序。如果两个单词的长度相同,则保持它们在输入时的相对顺序。为此,我们可以定义一个自定义的比较器。
words.sort((w1, w2) -> { int len1 = w1.length(); int len2 = w2.length(); // 如果一个单词的长度小于另一个,放在前面 if (len1 != len2) { return Integer.compare(len1, len2); } // 如果长度相同,按出现顺序排列 return words.indexOf(w1) - words.indexOf(w2);}); 排序完成后,我们将结果依次输出到标准输出,每个单词后面跟一个空格。
for (String word : words) { System.out.println(word + " ");} 综上所述,完整的Java程序如下:
import java.util.ArrayList;import java.util.Comparator;import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); ArrayList words = new ArrayList<>(); while (scanner.hasNext("#")) { String word = scanner.next(); words.add(word); } // 自定义排序逻辑 words.sort((w1, w2) -> { int len1 = w1.length(); int len2 = w2.length(); // 先比较长度 if (len1 != len2) { return Integer.compare(len1, len2); } // 长度相同,按输入顺序排列 return words.indexOf(w1) - words.indexOf(w2); }); // 输出排序后的结果 for (String word : words) { System.out.println(word + " "); } }} Espero que este programa cumpra com os requisitos especificados. Caso haja algum erro ou necessidade de ajustes, por favor, informe-me.
转载地址:http://bmwaz.baihongyu.com/