-4

我对java很陌生,请检查下面的代码。请告诉我哪里错了

提前致谢

导入java.io.*;

导入 java.util.*;

公共类解决方案{

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);

}

}

4

1 回答 1

0

好的,这是代码问题的大量列表,以下是他们的解决方案:

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

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

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

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

  • 您的代码中存在字长销售错误for(int j = 0 ; j < nums.length - 1 ; j++ )

  • 您已使用单词in作为 Scanner 类的参考变量,Scanner in = new Scanner(System.in);但在下一个for循环中获取输入时,您使用了单词scan。选一个。

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

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

于 2018-06-12T07:31:38.347 回答