gpt4 book ai didi

java - 紧急求救 : Battleship Java (for statement & array dimensions)

转载 作者:行者123 更新时间:2023-11-30 08:12:18 24 4
gpt4 key购买 nike

人们!所以,我正在尝试使用基本的数组和方法知识用 Java 制作战舰游戏(经典!)。我创建了一个 2 维的 boolean 板来放置我的船,这是我的代码:

public void placerBateau(int x, int y, boolean dir, int longueur){
int abs = this.x;
int ord = this.y;
this.longueur = longueur;

if(!tabPlat[x][y]){
if(dir){
for(abs=ligne; ligne<ligne+this.longueur; abs++){
tabPlat[abs][ord] = true;
}
} else {
for(ord=colonne; colonne<colonne+this.longueur; ord++){
tabPlat[abs][ord] = true;
}
}
}
}


public class BatailleNavale {
public static void main(String [] args){
boolean [][] tabPlat = { { false , false , false , false, false } , { false , false , false , false, false } , { false , false , false , false, false } , { false , false , false , false, false } , { false , false , false , false, false } , { false , false , false , false, false } };
Plateau plat1 = new Plateau(tabPlat);
plat1.placerBateau(2, 2, true, 2);
plat1.tir(2, 2);
System.out.println(plat1.toString());
}

基本上,为了放置我的船,我想做一个 for 循环,并在我在 for 语句中定义的间隔内使每个单元格为真(更改它们的初始值)。但我明白了:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 6
at Plateau.placerBateau(Plateau.java:39)
at BatailleNavale.main(BatailleNavale.java:6)

它指的是下面这行代码:

tabPlat[abs][ord] = true;

我明白它代表什么,但我不明白我怎么能对此有意见。

PS - 我很抱歉我的英语不好。

最佳答案

错误在这里:

ligne<ligne+this.longueur

你永远不会改变lignelongueur所以它一直持续到超出数组为止。

colonne<colonne+this.longueur 相同

关于java - 紧急求救 : Battleship Java (for statement & array dimensions),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30615035/

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