【问题标题】:Ouput is not expected in sorting coin array values using selection sorting使用选择排序对数组值进行排序时不期望输出
【发布时间】:2014-01-30 17:22:31
【问题描述】:

我想使用选择排序根据它们的值对 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]

请帮助解决此问题。提前致谢。

【问题讨论】:

  • 你需要在你的 coin 类中重写 toString 方法

标签: java sorting selection


【解决方案1】:

您只需覆盖 coin 中的默认 toString() 即可生成所需格式的输出字符串。喜欢:

@Override
public String toString() {
    return "[" + r + ", " + p + "]";
}

此外,要获得您提到的输出,您需要在 CoinSelectionSorter 中排序之前打印硬币列表。

【讨论】:

    【解决方案2】:

    你需要在你的 Coin 类中实现toString()

    @Override
    public String toString() {
        return "Coin [r=" + r + ", p=" + p + "]";
    }
    

    这段代码是用 Eclipse 生成的。您可以在 Source > Generate toString()...

    中轻松做到这一点

    【讨论】:

      猜你喜欢
      • 2021-11-02
      • 1970-01-01
      • 2022-01-03
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-16
      相关资源
      最近更新 更多