我试图在sortBabies中按字母顺序排序婴儿,但我无法交换位置,因为错误出现为“ArrayList类型中的方法集(int, Baby)不适用于参数(int, string)”。我将名称1和名称2设置为字符串值,以便我能够比较,但现在我无法交换位置。
import java.util.*;
public class BabyCilent {
static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList<Baby> babies = new ArrayList<Baby>();
/*for(int i = 0; i < 4; i++) {
Baby newBaby = getBaby();
babies.add(newBaby);
}*/
//hardcode data so that dont need to keep entering
Baby baby1 = new Baby("d", 4);
Baby baby2 = new Baby("c", 3);
Baby baby3 = new Baby("a", 1);
Baby baby4 = new Baby("b", 2);
babies.add(baby1);
babies.add(baby2);
babies.add(baby3);
babies.add(baby4);
int choice = 0;
while(choice != 7){
System.out.println("1. Print all the baby in the array list");
System.out.println("2. Calculate the average age for all the baby");
System.out.println("3. Remove the baby in the array listn");
System.out.println("4. Add one more baby into the array list");
System.out.println("5. Sort all the baby in alphabetical order");
System.out.println("6. Output sorted baby to CSV file");
System.out.println("7. Exit");
choice = scanner.nextInt();
if(choice == 1) {
printAllBabies(babies);
}
if(choice == 2) {
calculateAveAge(babies);
}
if(choice == 3){
removeBaby(babies);
}
if(choice == 4){
addInOneMoreBaby(babies);
}
if(choice == 5) {
sortBabies(babies);
}
if(choice == 6) {
toCSVFile(babies);
}
}
}
private static void sortBabies(ArrayList<Baby> babies) {
boolean swap = true;
while(swap) {
swap = false;
for(int i = 1; i < babies.size(); i++) {
String name1 = babies.get(i-1).getName();
String name2 = babies.get(i).getName();
if(name1.compareTo(name2)>0) { //swap the two strings
babies.set(i-1, name2);
babies.set(i, name1);
swap = true;
}
}
}
}
您希望更改for循环的内部,以便在交换时将元素设置为child而不是字符串。
您的列表是婴儿的类型,您希望根据婴儿的名字更改列表中的元素。问题是名称的类型是字符串,因此与类型匹配错误。为了解决这个问题,您可以将局部变量更改为Baby
而不是
String
,只需在if中使用
getName()
来比较它们,如下所示:
for(int i = 1; i < babies.size(); i++) {
Baby baby1 = babies.get(i-1);
Baby baby2 = babies.get(i);
if(baby1.getName().compareTo(baby2.getName())>0) { //swap the two strings
babies.set(i-1, baby2);
babies.set(i, baby1);
swap = true;
}
}
我必须创建一个方法,根据电子邮件按字母顺序排序对象的ArrayList,然后打印排序后的数组。我对它排序有困难的部分。我已经研究过它,并尝试使用,但这对我不起作用。我需要一种叫做比较器的东西,但不知道它是如何工作的。我必须使用这些,或者像气泡排序或插入排序之类的东西可以用于这种事情吗? 这是我目前掌握的代码:
问题内容: 我是Java的新手,正在尝试按字母顺序排列术语的arrayList。(一个术语定义为一个字符和一个整数)(例如 我的代码如下: 为什么这不起作用?以及我该如何完成呢?我的arrayList称为术语,填充有Term类型 问题答案: 您在这行代码中遇到的问题。您的课程不是So 的类型,这两个对象将基于哪个属性或条件方法? 您必须使您的类为Comparable类型。和,根据您的需要覆盖该方法
问题内容: 我必须创建一种方法,该方法根据电子邮件按字母顺序对对象的 ArrayList 进行排序,然后打印排序后的数组。我在排序时遇到的麻烦。我已经对其进行了研究并尝试使用,但这对我不起作用。我当时是需要一个称为比较器的东西,但无法弄清楚它是如何工作的。我将不得不使用这些东西吗?还是像气泡排序或插入排序这样的东西可以用于这种事情? 这是我到目前为止的代码: 问题答案: 排序部分可以通过实现cus
嗨,我用冒泡排序查看了其他帖子,但解决方案在我的例子中不起作用:所以算法在我循环时重复了几次之后才起作用。但我如何在不使用输入的情况下做到这一点?这是我的代码,你知道我的意思:
已知字母序列【d, g, e, c, f, b, o, a】,请实现一个函数针对输入的一组字符串 input[] = {“bed”, “dog”, “dear”, “eye”},按照字母顺序排序并打印,结果应为:dear, dog, eye, bed。 说明 本问题在网上比较常见,但这里尝试用另外一个思路,并且用python来写,与众多用c++的有所不同,且似乎短小了不少。自己感觉比网上参考到的更
问题内容: 我有一个包含人名的字符串arraylist 。我想按字母顺序对arraylist进行排序。 我试图以上述方式对列表进行排序。但是它将排序后的数组显示为: 但我不想使其区分大小写。我想要的结果是: 问题答案: 自定义应该有帮助 或者,如果你使用的是Java 8: