gpt4 book ai didi

java - 列移位算法: shift the letters doesn't work

转载 作者:行者123 更新时间:2023-12-02 09:18:01 24 4
gpt4 key购买 nike

我想创建一个二维数组来输入字母表,然后将字母移动到数组中的下一个值。所以我有以下程序:

public class AlgorithmOfShiftedInColumn {
public static char[] alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();

/**
* source : http://www.codeurjava.com/2017/10/java-supprimer-un-element-dun-tableau.html
* @param a array
* @param del index of the item to delete
*/
public static void removeElement(char[] a, int del) {
System.arraycopy(a,del+1,a,del,a.length-1-del);
}

public static void main(String[] args) {
char[][] arrayAlgorithm = new char[26][26];
for (int i = 0; i < alphabet.length; i++) {
arrayAlgorithm[i] = alphabet;
char temporaryLetter;
temporaryLetter = alphabet[0];
removeElement(alphabet, 0);
alphabet[alphabet.length - 1] = temporaryLetter;
}
for (int i = 0; i < alphabet.length; i++) {
System.out.println(arrayAlgorithm[i]);
}
}

但是,不是按我想要的方式打印数组:

ABCDEFGHIJKLMNOPQRSTUVWXYZ
BCDEFGHIJKLMNOPQRSTUVWXYZA
CDEFGHIJKLMNOPQRSTUVWXYZAB
[...]

它向我显示:

ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ
[...]

尝试进行一些调试后,我注意到对 alphabet 的更改也对我的 arrayAlgorithm 数组中的元素产生了影响,而我没有修改它。您知道这个问题的原因吗?你有办法避免它或者有其他方法可以更轻松地做我想做的事吗?谢谢!

最佳答案

您尚未创建 alphabet 数组的新副本 arrayAlgorithm[i] 指向与 Alphabet 相同的引用位置,因此现有数组也会发生更改。使用 copyOf 创建数组的新副本。

Array.copyOf() 在堆上分配一个新的数组对象(其大小由第二个参数指定),将现有数组的内容复制到其中,然后返回对该数组的引用给你新的数组。

arrayAlgorithm[i] = Arrays.copyOf(alphabet,alphabet.length);

关于java - 列移位算法: shift the letters doesn't work,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58868879/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com