我希望将数组中的元素向右移动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){
}
}
答案 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);
}
}