Java 数组的旋转。

Java rotation of array.

我是 java 的新手,请检查以下代码。请告诉我哪里错了

提前致谢

导入java.io.*;

导入java.util.*;

public class 解决方案{

public void rotate(int[] nums, int k) {
    k %= nums.length;
    reverse(nums, 0, nums.length - 1);
    reverse(nums, 0, k - 1);
    reverse(nums, k, nums.length - 1);
}
 public void reverse(int[] nums, int start, int end) {
    while (start < end) {
        int temp = nums[start];
        nums[start] = nums[end];
        nums[end] = temp;
        start++;
        end--;
    }
     for(int j = 0 ; j < nums.length - 1 ; j++ )
    {
        System.out.print(nums[j] + " ");
    }

 }

}

public static void main(String[] args) {



    Scanner in = new Scanner(System.in);
    int size = in.nextInt();
    int n = in.nextInt();
    int[] nums = new int[size];


   for(int i = 0; i<nums.lenght-1;i++)
   {
       nums[i] = scan.nextInt();
   }

 rotate(nums, n);

}

}

好的,这里有一大堆代码问题,下面是它们的解决方案:

  • 这是一个大问题..... INDENTATION:请在以后的问题中提供正确的缩进到你的代码。如果没有适当的缩进,在没有适当上下文的情况下阅读冗长的代码(例如您的代码)会很痛苦。

  • 发表评论:任何语言的评论都是有原因的。他们让您了解您在代码中的选择,并帮助我们了解您的思维过程。

  • 好的,现在代码有问题:

  • 您的 class Solution 范围在提到 public static void main(String[] args) 方法之前结束。

  • 你的代码length这个词有销售错误for(int j = 0 ; j < nums.length - 1 ; j++ )

  • 您使用 in 一词作为扫描仪 class Scanner in = new Scanner(System.in); 的参考变量,但在下一个 for 中输入时循环,你用了scan这个词。选一个。

  • 方法 rotate 应定义为静态方法。您只是在 main() 方法中使用了它,没有任何对象或 class 名称。您不能从 Solution 类型对非静态方法 rotate(int[], int) 进行静态引用。

解决所有这些问题,我认为您的代码可以正常工作。