gpt4 book ai didi

java - char 数组的值不断变化

转载 作者:行者123 更新时间:2023-11-30 09:11:47 25 4
gpt4 key购买 nike

我有两个不同的二维数组,用于以以下形式存储 map :

 [#, #, #, #, #, #, #, #, #, #, #, #, #, #, #, #, #, #, #]
[#, ., ., ., ., ., ., ., ., ., ., ., ., ., ., ., ., ., #]
[#, ., ., ., ., ., ., G, ., ., ., ., ., ., ., ., E, ., #]
[#, ., ., ., ., ., ., ., ., ., ., ., ., ., ., ., ., ., #]
[#, ., ., E, ., ., ., ., ., ., ., ., ., ., ., ., ., ., #]
[#, ., ., ., ., ., ., ., ., ., ., G, ., ., ., ., ., ., #]
[#, ., ., ., ., ., ., ., ., ., ., ., ., ., P, ., ., ., #]
[#, ., ., ., ., ., ., ., ., ., ., ., ., ., ., ., ., ., #]
[#, #, #, #, #, #, #, #, #, #, #, #, #, #, #, #, #, #, #]

我已将此分配给变量 mapArrayGlobal,但是当我调用方法 createBlankArray() 时,它似乎更改了此变量。我的类(class)完整代码如下:

 static int Column, Row, goldNumber;
int goldCount = 0;
char [][] mapArrayGlobal, mapBlank;
boolean goldMarker = false;
boolean exitSet = false;

public void setPosition(int rows, int column, char [][] TwoDArray, int goldValue){
goldNumber = goldValue;
Column = randInt(1, column - 1);
Row = randInt(1, rows - 2);

mapArrayGlobal = TwoDArray;
mapBlank = mapArrayGlobal;

if(mapArrayGlobal[Row][Column] == '#'){
setPosition(rows, column, TwoDArray, goldValue);
}
else if(mapArrayGlobal[Row][Column] == 'G'){
goldMarker = true;
mapArrayGlobal[Row][Column] = 'P';
}
else{
mapArrayGlobal[Row][Column] = 'P';
}
createBlankArray(TwoDArray);
}

public void createBlankArray(char [][] array){
printArray(array);
for(int i = 1; i < array.length - 1; i++){
for(int j = 1; j < array[0].length - 1; j++){
mapBlank[i][j] = '?';
}
}
printArray(mapBlank);
printArray(mapArrayGlobal);
}

public static int randInt(int min, int max) {

Random rand = new Random();

int randomNum = rand.nextInt((max - min) + 1) + min;

return randomNum;
}

在这段代码的最后,mapArrayGlobal 和 mapBlank 的值都是:

 [#, #, #, #, #, #, #, #, #, #, #, #, #, #, #, #, #, #, #]
[#, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, #]
[#, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, #]
[#, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, #]
[#, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, #]
[#, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, #]
[#, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, #]
[#, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, #]
[#, #, #, #, #, #, #, #, #, #, #, #, #, #, #, #, #, #, #]

谁能告诉我这是为什么。

非常感谢:)

最佳答案

您实际上是将 TwoDArray 变量的引用(的值)传递给 createBlankArray 方法。因为你有:

mapArrayGlobal = TwoDArray;
mapBlank = mapArrayGlobal;

mapBlank 指向 mapArrayGlobal,后者指向 TwoDArray,因此更改 mapBlank 会导致更改 TwoDArray 的元素。

顺便说一句,您不应该以大写字母开头变量/实例名称。命名变量的约定是 camelCase

关于java - char 数组的值不断变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21939722/

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