第19课项目 - 一个价格的两个订单 - 排序数组

时间:2011-12-12 03:02:00

标签: java


我正在使用Blue Pelican Java教科书,并被困在第19课的项目中。它要求:
修改下面的代码以打印两个并排列。第一列应按升序排列(如下面的代码将打印),第二列应按降序排列。输出应为:

Ascend   Descend
Agnes    Thomas
Alfred   Mary
Alvin    Lee
Bernard  Herman
Bill     Ezra
Ezra     Bill
Herman   Bernard
Lee      Alvin
Mary     Alfred
Thomas   Agnes

目前的代码是:

import java.util.*;
public class Tester
{
    public static void main(String args[])
    {
        String ss[] = {"Bill", "Mary", "Lee", "Agnes", "Alfred", "Thomas", "Alvin", "Bernard", "Ezra", "Herman"};
        Arrays.sort(ss);
        for(String varSs: ss)
            System.out.println(varSs);
    }
}

如何制作降序列?
谢谢,-AJ

7 个答案:

答案 0 :(得分:1)

以下是给您的提示:查看Arrays.sort(T[], Comparator<? super T>)以及Comparator界面。

答案 1 :(得分:1)

你可以尝试:

Arrays.sort(ss, Collections.reverseOrder());

导入已导入的java.util.Collections包含reverseOrder方法,该方法将按降序排序。

答案 2 :(得分:0)

您可以使用Collections.reverse()方法。

Collections.reverse(Arrays.asList(ss));

答案 3 :(得分:0)

自己编写Comparator并使用此界面:

Arrays.sort(T[] a, Comparator<? super T> c)

你甚至可以从最后对你的数组进行反向迭代。

答案 4 :(得分:0)

我会反对这种情况,并建议你只做一次就像你正在做的那样。然后使用for循环,而不是for-each循环,并使用for循环索引来获取第一列的String,数组索引,数组的长度以及获取String的索引的非常简单的数学对于第二列。然后使用System.out.printf(...)将两个字符串排成一行。这比以相反的顺序对阵列​​进行两次排序要容易得多(或者使用比较器 - 如果你问我,那就太粗糙了)。

答案 5 :(得分:-1)

我怀疑他们正在寻找以下内容:

import java.util.*;
public class Tester
{
    public static void main(String args[])
    {
        String ss[] = {"Bill", "Mary", "Lee", "Agnes", "Alfred", "Thomas", "Alvin", "Bernard", "Ezra", "Herman"};
        Arrays.sort(ss);
        int length = ss.length;
        for(int i = 0; i < length ; i++)
            System.out.println(ss[i]+"\t"+ss[length-1-i]);
    }
}

答案 6 :(得分:-1)

UnicodeEncodeError: 'ascii' codec can't encode character '\xab' in position 8: 
ordinal not in range(128)