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

标签 java arrays for-loop indexing

人们! 因此,我尝试使用 Java 制作战舰游戏(经典!),并具备基本的数组和方法知识。 我创建了一个二维 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 语句中定义的间隔内使每个单元格为 true(更改其初始值)。 但我明白了:

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/

相关文章:

java - 在 Objectify 4 中保存时忽略一些实体字段

java - 冒号分隔值的正则表达式是什么?

java - findViewById() 无法在我的自定义适配器中解析

python - 如何在 python 中规范化二维 numpy 数组?

javascript - 如何使用在 React 初始状态中声明的空数组?

c++ - 编译器错误 :falied to determine size of array size identifier

python - 在 python 中循环遍历资源

javascript - 如何迭代多维 javascript 对象数组

mysql - 带有sql server的bash中的坏循环变量

java - 来自第二个 Activity 的 Android Asynctask