当前位置: 首页 > 知识库问答 >
问题:

移位数组元素

孔逸春
2023-03-14

我有办法转移arr元素:

 private static int[] shiftElements(int[] arr, int n) {
        for (int i = 0; i < arr.length; i++) {
            arr[i+n] = arr[i];
        }
        return arr;
    }

n - amount of shifting.

当我执行这段代码时,我遇到了一个异常:

    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 6

据我所知,程序需要更多的空间来包含另一个项目。但是我不需要添加更多的项目,我需要已经存在的移动。用n参数,如果参数为负,所有数组向左移动,如果为正向右移动,如果为零-什么都不会发生。

Examples


ORIGINAL ARRAY: 1,3,5,6,8,10

example: 
n = 2
arr: 8,10,1,3,5,6

How to achieve it?

共有1个答案

景嘉志
2023-03-14

你的例外来自这一行:

arr[i+n] = arr[i];

你会得到一个例外,因为我

从您的示例中,您希望将那些最终位于数组外部的元素添加到前端。

我不会帮你做作业,但你可能想使用if(…) 。或者一个mod表达式。。。

 类似资料:
  • 问题内容: 我很难弄清楚如何移动数组元素。例如,给出以下内容: 我为什么能写入移动功能之前? 还是之后? 移动后,应更新其余元素的索引。这意味着在第一个示例中,移动后arr [0] =’a’,arr [1] =’d’arr [2] =’b’,arr [3] =’c’,arr [4] = ‘e’ 这似乎应该很简单,但是我无法将其包裹住。 问题答案: 如果您想在npm上使用一个版本,则array-mo

  • 我正在使用Processing通过串行端口向Arduino卡发送字节数组。我遇到了一个奇怪的问题,Arduino似乎无法“同步”读取数组——字节元素似乎已转移到Arduino代码。 例如,从处理I发送阵列: Arduino可以将其解读为: 这个问题是随机出现的——我尝试了大约1/3次,并且移位总是随机的。当它工作时,它会在会话期间继续工作,直到我重新启动连接。 还有其他人遇到过类似的问题吗?关于如

  • 问题内容: 几年前从这个问题开始,在numpy中是否有规范的“移位”功能?我从文档中看不到任何东西。 这是我正在寻找的简单版本: 使用它就像: 这个问题来自于我昨天尝试[编写快速滚动产品的](http://codingdict.com/questions/163825尝试。我需要一种“转移”累积乘积的方法,我所能想到的就是在中复制逻辑。 因此比快得多。此版本的功能执行得更好: 更快的版本只是简单地

  • 从数组中移除给定函数返回 false 的元素。 使用 Array.filter() 和 Array.reduce() 来查找返回真值的数组元素,使用 Array.splice() 来移除元素。 func 有三个参数(value, index, array)。 const remove = (arr, func) => Array.isArray(arr) ? arr.filter(fu

  • 到目前为止,我掌握的是这样的: > 从另一篇SO文章中,我了解到存储在较大类型中的每个字节都必须是,并带有0xFF,因为它被转换为32位数字。我猜前导的24位是用s填充的(尽管我不知道为什么它不是用零填充的......用s前导难道不会改变数字的值吗?(2)毕竟与(-14)不同。)所以的目的是只抓取最后的8位(即整个字节)。 当左移8位时,这使得当ing时,中的8位位于最高有效位置,而中的8位位于最

  • 问题内容: 给定n个元素的数组,即 我可以编写一个扩展,以便可以修改数组以实现以下输出: 有没有一种方法可以实现将数组移动任何索引(正数或负数)的功能。我可以使用子句以命令式方式实现此功能,但我正在寻找的是功能性实现。 该算法很简单: 通过提供的索引将数组分为两个 将第一个数组附加到第二个数组的末尾 有什么方法可以以功能样式实现它吗? 我完成的代码: 问题答案: 您可以使用远程下标并连接结果。这将