gpt4 book ai didi

java - 如何检查二维数组是否越界?

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

方法 isFilledAt() 返回 true 如果形状在给定的 row/col 位置有一个填充 block 和 false 如果 block 为空。如果位置超出范围,则引发 FitItException 并提供信息性消息。我正在运行一个嵌套循环来获取位置并且无法确定位置是否超出范围。 smb可以帮忙吗?提前致谢!

public class CreateShape {

private int height;
private int width;
private char dc;
private Rotation initialPos;


public CreateShape(int height, int width, char dc)
{
this.height = height;
this.width = width;
this.dc = dc;
initialPos = Rotation.CW0;
}
public boolean isFilledAt(int row, int col)
{
char[][] tempArray = new char[height][width];
for(int i = 0; i < tempArray.length; i++)
for(int j = 0; j < tempArray[i].length; j++)
{
if(row > tempArray.length || row < 0)
throw new FitItException("Out of Bounds!");

if(tempArray[row][col] == dc)
return true;
}

return false;
}

最佳答案

您需要检查 rowcol 是否小于零,或者 row 是否大于或等于 height,或者如果 col 大于或等于 width。请注意,您只需要进行一次验证,因此您可以将检查移到循环之外:

public boolean isFilledAt(int row, int col)  {
if (row < 0 || row >= height || col < 0 || col >= width) {
throw new FitItException("Out of Bounds!");
}
char[][] tempArray = new char[height][width];
for (int i = 0; i < tempArray.length; i++) {
for (int j = 0; j < tempArray[i].length; j++) {
if (tempArray[row][col] == dc) {
return true;
}
}
}
return false;
}

但是请注意,isFilledAt() 可能无法按您的预期工作。由于每次调用该方法时都会重新创建 tempArray,因此条件 tempArray[row][col] == dc 可能永远不会计算为 true .

关于java - 如何检查二维数组是否越界?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29808883/

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