gpt4 book ai didi

java - 转换二维数组内的相邻值

转载 作者:行者123 更新时间:2023-12-01 11:33:46 36 4
gpt4 key购买 nike

我目前正在做一项作业,我必须通读一个已经声明的二维数组,并更改与它们的上、下、右或左颜色相邻的 0 的“颜色”。

我试图循环遍历一个字符数组,首先用ascii数字打印出来,然后将与颜色相邻的所有0更改为相同的“颜色”例如如果我有类似的东西

 1000
G001
1010

将它放入我的程序中将会得到这样的结果

   1GGG
GGG1
1G10

我让它循环两次,首先显示没有更改值的数组。第二个应该将其更改为我在示例中所示的内容。

这是我迄今为止想到的

public class MatrixTest{
public static void main(String[]args)
{int[][] array = {{1,0,0,0,0,0,0},
{1,1,1,1,'G',0,0},
{0,0,'B',0,1,0,1},
{1,1,1,1,1,1,1},
{1,0,1,'R',1,0,1},
{1,0,1,0,1,0,1},
{0,0,0,1,1,1,1},
{0,'B',0,1,0,'G',0}};

for(int row = 0; row < 8; row++)
{
for(int col = 0; col < 7; col++)
{
System.out.print(array[row][col] + " ");

}System.out.println();
}

System.out.println("\n\n" + "Output: ");

for(int i = 0; i < 8; i++)
{
for(int j = 0; j < 7; j++)
{
if(array[i][j] != 0 && array[i][j] != 1){
System.out.print(array[i][j]);
}//Here I would like to say something like if(array[i+1][j] == 0) change color
//and do so for the other cases as well, i-1, j+1, j-1... doesn't move diagonally
if(array[i][j] == 1)
System.out.print(1 + "");

}System.out.println();

}
}

}`

到目前为止,第二对循环仅显示 1 和颜色,如果我以与 1 相同的方式添加 0,它将与第一个数组相同,再次打印是没有意义的。一旦与颜色相邻的所有 0 都已更改,我就可以将它们转换为其相对 ascii 值。

我想更改第一个 if 语句内的颜色,但我想知道是否有更好的方法来执行此操作。

最佳答案

只是为了让您知道,在打印答案之前,您必须构建新的二维数组。目前,您正在尝试在遍历数组时打印出答案,但在顶部的示例输出中,第一行第二库仑中的 0 不与任何颜色相邻,这意味着更改为颜色的 0 可以更改其他颜色0 变为相同颜色。这使得在构建新的二维数组时打印答案变得困难。如果我正在做这个作业,我将构建一个递归函数,它将所有具有相邻颜色的 0 更改为这些颜色,并且如果循环后任何 0 发生更改,您将再次调用该函数。像这样的东西:

function declaration(array){
int colorChanged = 0;
for row{
for coulomb{
if (color adjacent){change color; colorChanged = 1;}
}
}
if (colorChanged == 1){function(array)}
return array
}

请注意,这只是一个示例,不是工作代码,但希望它能给您一些想法。

关于java - 转换二维数组内的相邻值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30205735/

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