这是我的作业,我不知道如何继续。输出仅打印我的前四位老师,我不知道为什么它不打印我的最后三位老师。谢谢!
创建一个名为 Teachers 的 ArrayList。仅按照您在白天看到老师的姓氏的顺序填写 ArrayList(第 1 节:Jensen,第 2 节:Houge,第 3 节:……等)您只需将老师的姓氏放入 ArrayList 中,因此它将打印 [Jensen、Houge 等...]。)使用 print 方法打印 ArrayList。
编写一个方法,接受您的老师的 ArrayList,并从中创建一个名为 ordered 的新 ArrayList,其中您老师的姓名现在按字典顺序排列。打印结果 ArrayList。 (不要更改原来的数组列表,创建一个新的!)
import java.util.ArrayList;
public class LexicographicOrdering
{
public static void main (String [] args){
ArrayList<String> teachers = new ArrayList<String>();
teachers.add("Turnbow");
teachers.add("Dyvig");
teachers.add("Williams");
teachers.add("Houge");
teachers.add("Allaire");
teachers.add("Violette");
teachers.add("Dorgan");
System.out.println(teachers);
order(teachers);
}
public static void order(ArrayList<String> teachers ){
ArrayList<String> ordered = new ArrayList<String>();
for(int i = 0; i < teachers.size(); i++){
String str = teachers.get(i);
for(int j = 1; j < teachers.size(); j++){
if(str.compareTo(teachers.get(j)) > 0){
str = teachers.get(j);
}
}
ordered.add(str);
teachers.remove(str);
}
System.out.print(ordered);
}
}
最佳答案
所以这里的问题在于你的静态订单方法。正如 Karl 上面所建议的,您希望将该方法分成两个独立的部分。第一个将创建一个名为“ordered”的 ArrayList,然后用“teachers”数组中包含的数据填充它。
ArrayList<String> ordered = new ArrayList(); //the second <String> is not required
for(int i = 0; i < teachers.size(); i++){
String str = teachers.get(i);
ordered.add(str);
}
下一个目标是按字母顺序对数组进行排序,这可以使用 java.util 包中包含的 Collections.sort(ArrayList) 方法来实现。
Collections.sort(ordered);
现在您需要打印 ArrayList。
System.out.println(ordered);
由于这是一项家庭作业,我建议阅读 Collections.sort() 方法及其示例。快速谷歌搜索找到了以下网站:http://beginnersbook.com/2013/12/how-to-sort-arraylist-in-java/
此外,我建议阅读 Collection 类的 API。 https://docs.oracle.com/javase/8/docs/api/java/util/Collections.html#sort-java.util.List-
编辑: 快速浏览一下,我认为您的字符串删除最后 3 个名称的原因是您在查看列表中的每个位置时从列表中删除了项目。本质上,您正在查看列表中的所有其他项目,因此。
关于java - 按字典顺序排列字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35329592/