gpt4 book ai didi

java - 用于排序整数的 compareTo 方法

转载 作者:行者123 更新时间:2023-11-29 03:24:14 24 4
gpt4 key购买 nike

我很难为我的程序创建 compareTo() 方法。我的程序从命令行读取 5 对字符串/整数。它们将代表 Person 对象的姓名和年龄。

例如我的命令行参数是:Asia 19 Java 20 Html 25 CSS 18 Ruby 10

我的目标是将它们显示在一个从最小到最大数字重新排列的对话框中。

*我需要帮助的问题是我的 compareTo() 方法。我有点卡在这一点上,因为我认为我不理解使用这种方法的概念。如果有人能给我一个信息丰富的解释,那就太棒了!我的代码:

// To display dialog box(s)
import javax.swing.JOptionPane;
//An interface used to compare two objects.
import java.lang.Comparable;

public class searchSort{
public static void main(String[] args){
if (args.length != 10){
System.out.println("Please enter 5 String/Intger pairs " +
"on the commandline");
}
else{
int age1 = new Integer(0);
int age2 = new Integer(0);
int age3 = new Integer(0);
int age4 = new Integer(0);
int age5 = new Integer(0);
try{
age1 = Integer.parseInt(args[1]);
age2 = Integer.parseInt(args[3]);
age3 = Integer.parseInt(args[5]);
age4 = Integer.parseInt(args[7]);
age5 = Integer.parseInt(args[9]);
}
catch (NumberFormatException exception) {
System.out.println("Error: Commandline arguments 2,4,6,8,10 must be a positive integer.");
System.exit(0); // end program
}

Person[] arr = new Person[5];
arr[0] = new Person(args[0], age1);
arr[1] = new Person(args[2], age2);
arr[2] = new Person(args[4], age3);
arr[3] = new Person(args[6], age4);
arr[4] = new Person(args[8], age5);

JOptionPane.showMessageDialog(null, arr[0]+ "\n" +arr[1]+ "\n"+arr[2]+ "\n"+
arr[3] + "\n" + arr[4]);

//
}
}
}
class Person implements Comparable{
// Data Fields
protected String name;
protected int age;

// Constructor
public Person(String n1, int a1){
name = n1;
age = a1;
}

//toString() method
public String toString(){
String output = name + " is " + age + " years old.";
return output;
}

//getAge() method
public int getAge(){
return age;
}

// compareTo() method
public int compareTo(Object object) throws ClassCastException{
int person1 = this.getAge();
int person2 = object.getAge();
int result = this.getAge() - object.getAge();
return result;
}

}

最佳答案

您的代码无法编译,因为您将对象用作人。你需要转换它:

public int compareTo(Object object) throws ClassCastException{
return age - ((Person)object).age;
}

而且你只需要一行,你可以直接访问字段。

关于java - 用于排序整数的 compareTo 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21903404/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com