gpt4 book ai didi

java - 减去 X 时索引超出范围

转载 作者:行者123 更新时间:2023-12-01 17:47:38 27 4
gpt4 key购买 nike

我正在尝试查找一次旅行的矩形区域,可以在此处找到更多上下文 enter image description here enter image description here

我在下面的代码中遇到的错误是:

"Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1 at Main.main(Main.java:50)"

修复可能是显而易见的,但我根本不明白,如果这段代码可以编译并且提供良好的输出,你们知道如何自动计算矩形面积而不是手动计算吗?只是一个提示或想法,而不是整个代码。

public class Main extends JPanel{

public static void main(String[] args) {

String line = " F 6 R 1 F 4 RFF 2 LFF 1 LFFFR 1 F 2 R 1 F 5 ";
String pattern = "[RLF ]+[1-9]{1}";

Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(line);

List<String> operations = new ArrayList<String>();

while(m.find()){
System.out.println("found this "+ m.group());
operations.add(m.group());
}

String[][] arrays = new String[1000][1000];
int x = 500;
int y = 500;
arrays[x][y] = "1";

int k = 1;
for(String operation : operations){
int op = Integer.parseInt(operation.replaceAll("\\D", ""));
String directions = operation.replaceAll("[0-9]{1}", "");
char[] directionsArray = directions.toCharArray();
for(int i = 0; i<op; i++){
for( int j = 0; i<directionsArray.length; j++){
if(directionsArray[j] != ' '){
if (directionsArray[j] == 'R'){
k =+ 1;
if(k > 4) k = 1;
}else if (directionsArray[j] == 'L'){
k =- 1;
if(k < 1) k = 4;
}else if (directionsArray[j] == 'F'){
if (k == 1) {
x =- 1;
arrays[x][y] = "1";
}else if (k == 2){
y =+ 1;
arrays[x][y] = "1";
}else if(k == 3){
x =+ 1;
arrays[x][y] = "1";
}else if(k == 4){
y =-1;
arrays[x][y] = "1";
}
}
}
}
}
}

for(int i =0; i<arrays.length;i++){
for(int j = 0; i<arrays.length;i++){
System.out.println(arrays[i][j]);
}
}
}


}

感谢您的宝贵时间。

最佳答案

您将 y 分配给 -1(Java 将 y =-1; 解析为 y = -1;),然后使用它作为下一行的索引。您可能想用 y -= 1; 来减少 y 。 (有几个地方对 xy 变量都执行了此操作。)

关于java - 减去 X 时索引超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53321307/

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