我正在尝试按升序和降序对这个数组进行排序,请帮帮我。我有两个单独的循环,我想在同一行上打印两个循环,如果我不能这样做,请告诉我另一种方法。这是一个任务,如果有人想知道的话。
import java.util.Arrays;
public class Lab10c{
public static void main(String[] args) {
System.out.println("AscendttDescendn");
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( "tt" + ss[r]);
}
}
}
这是当前的打印输出:
Ascend Descend
Greetings
Hello
Hi
Howdy
Welcome
Welcome
Howdy
Hi
Hello
Greetings
我需要它在两个单独的列排列时打印。谢谢!p.s 对不起,如果我不清楚,我是该网站的新手:)
为此,无论如何,您必须在每次迭代时获取两个元素。
这意味着在迭代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
都将沿阵列以镜面反射方式移动。
这样做
for ( int i = 0,j=ss.length-1;; i < ss.length; i++,j--){
System.out.println(ss[i] + "tt"+ss[j]);
}
你提到的那样打印elemenets?
在你的代码中,对于第一个 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( "tt" + ss[r]);
}
在此循环中打印的元素不会从 sonsole 的第一行打印。这样你得到的结果:
Ascend Descend
Greetings
Hello
Hi
Howdy
Welcome
Welcome
Howdy
Hi
Hello
Greetings
如何解决?
您需要将 2 个 for 循环组合在一起,例如,
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("tt" + ss[ss.length - i - 1]);
}