[英]Ouput is not expected in sorting coin array values using selection sorting
我想通过使用Selection sort来根据它们的值对Coin数组进行排序,但是输出没有正确显示。 输出显示为其他一些独特的格式。 我试图解决问题但仍无法找到解决方案。 我有两个类CoinSelectionSorter和一个Coin类。 我使用Comparable接口来对Coin值进行排序。 整个代码就像那样 -
CoinSelectionSorter.java:
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
/**
This class sorts an array of coins, using the selection sort
algorithm.
*/
public class CoinSelectionSorter {
public static void main (String args[])
{
//public void sort() {
Coin[] list = new Coin[] {new Coin(2, "Johan"),new Coin(5, "peter"), new Coin(1, "robin"),new Coin(15, "walker") }; // example data;
List <Coin> p = Arrays.asList(list);
Collections.sort(p);
System.out.println(p);
list = p.toArray(list);
System.out.println(p);
}
}
Coin.java:
public class Coin implements Comparable<Coin >{
Integer r;
String p;
public Coin(Integer r, String p) {
// TODO Auto-generated constructor stub
this.r = r;
this.p = p;
}
@Override
public int compareTo(Coin test) {
// TODO Auto-generated method stub
return this.r - test.r;
}
}
它给出了如下输出:
[Coin@19821f, Coin@addbf1, Coin@42e816, Coin@9304b1]
[Coin@19821f, Coin@addbf1, Coin@42e816, Coin@9304b1]
但我希望输出为:
[2, Johan], [5, 'peter], [1, robin], [15, walker]
[1, robin], [2, Johan], [5, 'peter], [15, walker]
请帮助解决此问题。 提前致谢。
您需要的只是覆盖硬币中的默认toString()以生成所需格式的输出字符串。 喜欢:
@Override
public String toString() {
return "[" + r + ", " + p + "]";
}
此外,要获得您提到的输出,您需要在CoinSelectionSorter中排序之前打印硬币列表。
你需要在类Coin中实现toString()
:
@Override
public String toString() {
return "Coin [r=" + r + ", p=" + p + "]";
}
此代码已使用Eclipse生成。 您可以在Source> Generate toString()中轻松完成此操作...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.