gpt4 book ai didi

java - 如何正确改变Java中数组元素的值?

转载 作者:行者123 更新时间:2023-12-01 23:28:59 24 4
gpt4 key购买 nike

这可能是非常简单的事情,但由于我的计算机科学类(class)才开始大约 5 周,请原谅我的任何无知。

作为今年年级的一部分,我们必须实现“Spread-and-Die”游戏。该游戏的命令行界面是 12 x 12 ASCII 布局。

我为解决问题而编写的代码,由于长度太长,不是我的实际代码,我在这里:

class PrintTest
{
public static void main (String[] args)
{
final char[] array = {'#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#'};


char[] array1 = array;
char[] array2 = array;
char[] array3 = array;

array2[6] = 'P';

System.out.println("\n");

System.out.print (array1[0]);
System.out.print (array1[1]);
System.out.print (array1[2]);
System.out.print (array1[3]);
System.out.print (array1[4]);
System.out.print (array1[5]);
System.out.print (array1[6]);
System.out.print (array1[7]);
System.out.print (array1[8]);
System.out.print (array1[9]);
System.out.print (array1[10]);
System.out.print (array1[11]);

System.out.print("\n");

System.out.print (array2[0]);
System.out.print (array2[1]);
System.out.print (array2[2]);
System.out.print (array2[3]);
System.out.print (array2[4]);
System.out.print (array2[5]);
System.out.print (array2[6]);
System.out.print (array2[7]);
System.out.print (array2[8]);
System.out.print (array2[9]);
System.out.print (array2[10]);
System.out.print (array2[11]);

System.out.print("\n");

System.out.print (array3[0]);
System.out.print (array3[1]);
System.out.print (array3[2]);
System.out.print (array3[3]);
System.out.print (array3[4]);
System.out.print (array3[5]);
System.out.print (array3[6]);
System.out.print (array3[7]);
System.out.print (array3[8]);
System.out.print (array3[9]);
System.out.print (array3[10]);
System.out.print (array3[11]);

System.out.print("\n");
}
}

正如您显然所看到的,我还无法找到如何打印整个数组,因此考虑到我的解决方案的丑陋,任何提示也都是有用的。

无论如何,当该代码被编译/运行时,我得到这个:

######P#####
######P#####
######P#####

考虑到我对 Java 和一般编程的理解有限,只有第二行应该有一个“P”。由于某种原因,更改 array2 元素 6 的语句也对其他两个数组执行相同的操作。

非常感谢您的帮助。

最佳答案

因为原始数组就像对象一样,它们保存一个引用。因此,当分配 array2[6] = 'P' 时,就像说 array[6] = 'P' ,因此 array1[6] = 'P' array3[6] = 'P'

为了避免这种情况,您可以在创建数组时调用方法 clone()

char[] array1 = array.clone();
char[] array2 = array.clone();
char[] array3 = array.clone();

如果要复制数组的指定元素,可以使用 Arrays.copyOfRange :

char[] array1 = Arrays.copyOfRange(array, 0, array.length);
^ ^ ^
| | |

| | indice to

| indice from

|
array to be copied

要打印数组,您还可以使用 for 循环。

for(int i = 0; i < array1.length; i++)
System.out.print(array1[i]);

System.out.println();

关于java - 如何正确改变Java中数组元素的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19617025/

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