繁体   English   中英

在使用选择排序对硬币阵列值进行排序时,不期望输出

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM