如何在同一行上打印单独的循环?

时间:2013-11-17 01:25:03

标签: java arrays loops

我正在尝试按升序和降序对此数组进行排序,请帮帮我。我有两个独立的循环,我想在同一行上打印,如果我不能这样做,请通知我另一种方法。如果有人想知道,这是一项任务。

    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

我需要它打印成两个单独的列排列。谢谢! 请注意,如果我不清楚,我是网站的新手:)

3 个答案:

答案 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]);
}

fromBeginfromEnd都会沿着数组以镜面方式移动。

答案 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]);
    }