我正在使用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
答案 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)