如何反转我的数组以反向打印数组?

时间:2014-11-04 15:37:45

标签: java arrays loops

public class BubbleSort {
    public static void main(String []args) {
        int[] values = {45, 67, 12, 34, 25, 39};
        int pass, comparison, temp;
        String results = "";

        for (pass = 1; pass <= values.length - 1; pass++) {
            for (comparison = 1; comparison <= values.length - pass; comparison++) {
                if (values[comparison - 1] > values[comparison]) {
                    temp = values[comparison - 1];
                    values[comparison - 1] = values[comparison];
                    values[comparison] = temp;
                }
            }
        }

        for (int i = 0; i < values.length; i++){
             results += values[i] + "\n";
        }
        System.out.print(results);
    }
}

那是我的代码。打印出来: 12 25 34 39 45 67

如何将其反转以打印出来:

67 45 39 34 25 12

另外,我如何正常打印出阵列,如:

45 67 12 34 25 39

我被困在如何将它们打印出来。

5 个答案:

答案 0 :(得分:0)

你必须自己恢复它。没有开箱即用的方法为你做这件事。

for(int i = 0; i < values.length / 2; i++)
{
    int temp = values[i];
    values[i] = values[values.length - i - 1];
    values[values.length - i - 1] = temp;
}

如果要打印数组的原始值,则必须在修改之前将其复制。

答案 1 :(得分:0)

反向:

for (int i = values.length; i >= 0; i--) results += values[i] + "\n";

对于原始文件,您需要在处理之前先复制原始数组。

答案 2 :(得分:0)

您可以通过多种方式进行操作,但无需反转阵列就可以反转打印...

results = "";
for (int i=0; i<values.length; i++) results = results+" "+values[i];
System.out.println("Non reversed :" + results);
results = "";
for (int i=0; i<values.length; i++) results = values[i]+" "+results;
System.out.println("Reversed :" + results);

现在,如果你真的想要反转你的数组,你只需要同时交换两个值,第一个和最后一个,第二个和前一个等,直到中间:

for (int i=0 i<values.length/2; i++) {
  int tmp = values[i];
  values[i] = values[values.length-1-i];
  values[values.length-1-i] = tmp;
}

答案 3 :(得分:0)

这样做:

public class BubbleSort
{
    public static void main(String []args)
    {
        String results = "";
        int[] values = {45, 67, 12, 34, 25, 39};
        for (int i = 0; i < values.length; i++) results += values[i] + "\n";
        System.out.print(results);
        int pass, comparison, temp;
        results = "";
        for (pass = 1; pass <= values.length - 1; pass++)
        {
            for (comparison = 1; comparison <= values.length - pass; comparison++)
            {
                if (values[comparison - 1] > values[comparison])
                {
                    temp = values[comparison - 1];
                    values[comparison - 1] = values[comparison];
                    values[comparison] = temp;
                }
            }
        }
        for (int i = 0; i < values.length; i++) results += values[i] + "\n";
        System.out.print(results);
        results = "";
        for (int i = values.length; i >= 0; i--) results += values[i] + "\n";
        System.out.print(results);
    }
}

答案 4 :(得分:0)

Collections界面中有一个方法可以反转List:Collections.reverse()

List<Integer> list = new ArrayList<Integer>(values); //Arrays.asList(45, 67, 12, 34, 25, 39);
Collections.reverse(list);
System.out.println(list);

对于打印部件,请记住您有一个数组arrays are tricky to print。相反,该列表可以通过println打印,没有任何问题。