我正在尝试按升序和降序对此数组进行排序,请帮帮我。我有两个独立的循环,我想在同一行上打印,如果我不能这样做,请通知我另一种方法。如果有人想知道,这是一项任务。
import java.util.Arrays;
public class Lab10c{
public static void main(String[] args) {
System.out.println("Ascend\t\tDescend\n");
String ss[] = new String[]{"Hi", "Hello", "Greetings", "Howdy", "Welcome"};
Arrays.sort(ss);
for ( int i = 0; i < ss.length; i++){
System.out.print(ss[i] + "\n");
}
for (int r = ss.length -1; r>=0; r--){
System.out.println( "\t\t" + ss[r]);
}
}
}
这是当前的打印输出:
Ascend Descend
Greetings
Hello
Hi
Howdy
Welcome
Welcome
Howdy
Hi
Hello
Greetings
我需要它打印成两个单独的列排列。谢谢! 请注意,如果我不清楚,我是网站的新手:)
答案 0 :(得分:2)
要做到这一点,在任何情况下,每次迭代都必须得到两个元素。
这意味着在迭代i
时,您需要从开头i
位置获取元素,并从末尾i
位置获取元素。
你已经拥有一个从结束开始并向后移动的循环,这样你就可以很容易地看到这样做了:
for (int i = 0; i < ss.length; ++i) {
int fromBegin = i;
int fromEnd = ss.length - 1 - i;
System.out.println(ss[fromBegin]+"\t"+ss[fromEnd]);
}
fromBegin
和fromEnd
都会沿着数组以镜面方式移动。
答案 1 :(得分:1)
喜欢这个
for ( int i = 0,j=ss.length-1;; i < ss.length; i++,j--){
System.out.println(ss[i] + "\t\t"+ss[j]);
}
答案 2 :(得分:0)
为什么如上所述打印elemenet?
在您的代码中,对于第一个for循环,
for ( int i = 0; i < ss.length; i++){
System.out.print(ss[i] + "\n");
}
System.out.print(ss[i] + "\n");
等于System.out.println(ss[i])
,当打印数组中的元素时,也会打印 newLine ()。
然后第二个for循环执行。
for (int r = ss.length -1; r>=0; r--){
System.out.println( "\t\t" + ss[r]);
}
此循环中打印的元素不会从sonsole的第一行打印。你得到了结果:
Ascend Descend
Greetings
Hello
Hi
Howdy
Welcome
Welcome
Howdy
Hi
Hello
Greetings
如何解决?
您需要将2 for-loop组合在一起,如
for (int i = 0; i < ss.length; i++) {
//Print element in Ascend order
System.out.print(ss[i]);
//Print element in Descend order in the same line
System.out.println("\t\t" + ss[ss.length - i - 1]);
}