数组移位...在运行后显示测试用例

时间:2016-08-23 14:53:53

标签: java arrays

我希望将数组中的元素向右移动1.最后一个元素应该转到位置0.到目前为止,我只完成了向右移动的部分,我想知道这是否正确但是当我按下跑步时,控制台中没有任何内容。我知道我必须把System.out.println();在主要但但我不知道用print命令调用什么。这是我的代码。

我尝试输入System.out.println(rotate({1,2,3,4}));进入主要但我得到一个错误...

public class Rotate {
    static void rotate(int[] A) {
        int arrayLength = A.length;

        for(int i = 0; i <= arrayLength-1; i++){
            A[i] = A[i+1];
        }  
    }

    public static void main(String[] args){

    }
}

2 个答案:

答案 0 :(得分:1)

您需要调用可以打印的功能,例如System.out.println()。现在您的代码还存在其他一些问题,您需要进行一些更改(有多种方法可以执行此操作)。一种方法是从旋转函数返回一个数组,然后打印返回的数组。

static int[] rotate(int[] A) {
    int arrayLength = A.length;

    for(int i = 0; i <= arrayLength-1; i++){
        A[i] = A[i+1];
    }
    return A;
}

我们现在可以从我们的main方法调用它,并打印每个元素。如果您只是调用System.out.println()方法并将其传递给数组,它将为此对象打印Hashcode。这对于打印数组的信息没有用。因此,您可以编写一个循环并打印数组中的每个元素。

public static void main (String[] args)
{
    int[] x = {1,2,3,4};
    int[] y = (rotate(x));
    System.out.println(y) // prints the hash, not what you want..


    for(int i = 0; i < y.length(); i++){
       System.out.println(y[i]);
     }
}

您可以使用System.out.println(Arrays.toString(y));打印整个数组,而不是单独打印数组的每个元素。

您现在仍然会收到错误

这是因为您的rotate方法未正确实施。但是,我认为这超出了这个问题的范围。

要验证这确实有效,您可以尝试在将rotate应用到数组之前打印该数组。

      int[] x = {1,2,3,4};
      for(int i = 0; i < x.length; i++) {
           System.out.println(x[i]);
      }

      // or alternative
      System.out.println(Arrays.toString(x));

答案 1 :(得分:0)

解决旋转和打印问题(如果你不想返回数组):

static void rotate(int[] A) {
    int arrayLength = A.length;

    int t = A[arrayLength-1];

    for (int i = arrayLength - 1; i > 0; i--) {
        A[i] = A[i-1];
    }

    A[0] = t;

    for (int i : A) {
        System.out.println(i);
    }
}