java - 使用杂耍算法进行数组旋转失败

标签 java arrays debugging rotation

这个问题来自G4G数组旋转。我在第二个循环中收到错误,告诉我数组超出了范围。但我不明白为什么。

import java.util.Scanner;

public class timba {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n, d;
        n = sc.nextInt();
        d = sc.nextInt();

        int[] arr = new int[n];

        for (int i = 0; i < arr.length; i++) {
            arr[i] = sc.nextInt();
        }

        while (d > 0) {
            int t;
            t = arr[0];
            for(int j = 0; j < arr.length; j++) {
               arr[j] = arr[j+1];
            }
            arr[n-1] = t;
            d--;
        }

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

}

最佳答案

在第二个循环内,j + 1一旦 j 达到 arr.length - 1,索引就会出界,因为索引从 0 开始,因此它应该是 j < arr.length - 1

关于java - 使用杂耍算法进行数组旋转失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61191127/

相关文章:

java - 如何安装第二个 JVM?

java - Java中音频是如何存储的

java - Hibernate 模型类和辅助方法最佳实践

c++ - 程序在没有调试符号的情况下崩溃,使用它们运行良好(在任何一种情况下都没有优化或任何东西)

java - 更新我的表时出错

java - 从 Spring Boot 下载字节数组到 Vue 前端

Python ndarray 具有不同类型的元素

Java 1.7.0_u25 小程序用eclipse调试

ios - 在 Visual Studios Xamarin 中调试 IOS 扩展时出错

javascript - React JS - 如何将不同的 Prop 传递到其他 Prop 的映射中