我用java创建的这个类(关于2D数组)有点问题

我用java创建的这个类(关于2D数组)有点问题,java,multidimensional-array,2d,Java,Multidimensional Array,2d,下面的代码声明、初始化并在控制台中打印2D数组: package tp_poo_v1_build1; public class UI { public static void main(String[] args) { int[][] carte = new int[5][5]; for(int i=0;i<carte.length;i++){ for(int j=0;j<carte[i].

下面的代码声明、初始化并在控制台中打印2D数组:

    package tp_poo_v1_build1;
public class UI {
    public static void main(String[] args) {
        int[][] carte = new int[5][5];


        for(int i=0;i<carte.length;i++){         
            for(int j=0;j<carte[i].length;j++){
                carte[i][j]='X';
            }
        }
        for (int i = 0; i < carte.length; i++) {
            System.out.print(" | ");
            for (int j = 0; j < carte[i].length; j++) {

                System.out.print((char)carte[i][j] +" | ");
            }
            System.out.println();
        }
    }  
}
run:
 | X | X | X | X | X | 
 | X | X | X | X | X | 
 | X | X | X | X | X | 
 | X | X | X | X | X | 
 | X | X | X | X | X | 
BUILD SUCCESSFUL (total time: 0 seconds)
package tp_poo_v1_build1;
public class UI {
    public static void main(String[] args) {
        Grille g=new Grille(5,5);
        g.afficher();
    }  
}
run:
THE Grill: 
BUILD SUCCESSFUL (total time: 0 seconds)
所以,问题是,我想使用一个名为:

    package tp_poo_v1_build1;
public class UI {
    public static void main(String[] args) {
        int[][] carte = new int[5][5];


        for(int i=0;i<carte.length;i++){         
            for(int j=0;j<carte[i].length;j++){
                carte[i][j]='X';
            }
        }
        for (int i = 0; i < carte.length; i++) {
            System.out.print(" | ");
            for (int j = 0; j < carte[i].length; j++) {

                System.out.print((char)carte[i][j] +" | ");
            }
            System.out.println();
        }
    }  
}
run:
 | X | X | X | X | X | 
 | X | X | X | X | X | 
 | X | X | X | X | X | 
 | X | X | X | X | X | 
 | X | X | X | X | X | 
BUILD SUCCESSFUL (total time: 0 seconds)
package tp_poo_v1_build1;
public class UI {
    public static void main(String[] args) {
        Grille g=new Grille(5,5);
        g.afficher();
    }  
}
run:
THE Grill: 
BUILD SUCCESSFUL (total time: 0 seconds)
哈维先生

因此,我在下面的“Grill”类中尝试了这段代码。

package tp_poo_v1_build1;
public class Grille {
    int nbrL,nbrC; 
    int [][] carte= new int[nbrL][nbrC];
    public Grille(int pNbrL,int pNbrC){      //constructor 
        nbrL=pNbrL;
        nbrC=pNbrC;
        /*for(int[] i:carte)// enhanced for loop ( for each )
            for(int j:i)
                i[j]='X';*/

        for(int i=0;i<carte.length;i++){ // syntax  not optmised !
            for(int j=0;j<carte[i].length;j++){
                carte[i][j]='X';//Char in int 'X' == 88
            }
        }
    }
    boolean estLibre(int x,int y) {
        return (carte[x][y] == 'X');
    }
    public void liberer(int x, int y){
        carte[x][y]='X';
    }
    public void occupe(int x,int y,char nom){
       //...!
    }
    public void afficher(){//nbrL=carte.length and nbrC=carte[i].length ?
      System.out.println("THE Grill: ");
      for (int i = 0; i < carte.length; i++) {
            System.out.print(" | ");
            for (int j = 0; j < carte[i].length; j++) {
                System.out.print(carte[i][j] +" | ");
            }
            System.out.println();
        }
    }
}
它输出:

    package tp_poo_v1_build1;
public class UI {
    public static void main(String[] args) {
        int[][] carte = new int[5][5];


        for(int i=0;i<carte.length;i++){         
            for(int j=0;j<carte[i].length;j++){
                carte[i][j]='X';
            }
        }
        for (int i = 0; i < carte.length; i++) {
            System.out.print(" | ");
            for (int j = 0; j < carte[i].length; j++) {

                System.out.print((char)carte[i][j] +" | ");
            }
            System.out.println();
        }
    }  
}
run:
 | X | X | X | X | X | 
 | X | X | X | X | X | 
 | X | X | X | X | X | 
 | X | X | X | X | X | 
 | X | X | X | X | X | 
BUILD SUCCESSFUL (total time: 0 seconds)
package tp_poo_v1_build1;
public class UI {
    public static void main(String[] args) {
        Grille g=new Grille(5,5);
        g.afficher();
    }  
}
run:
THE Grill: 
BUILD SUCCESSFUL (total time: 0 seconds)
这不是我想要的,所以如果有人知道什么不对,请帮助

为什么当我尝试填充数组并直接使用main方法打印它时,它工作得很好,但是当我使用构造函数“grill”和方法“afficher”填充并声明数组以打印它时,通过创建类“grill”的对象“G”,然后在main方法中调用方法“afficher”,它确实会打印消息“the Grill”,但不会像前面代码中那样打印数组? 我就是不知道为什么,所以请帮忙


提前谢谢你。(抱歉,如果这是一个愚蠢的问题,我是java和编程新手,在构造函数中初始化您的carte数组

在建造师面前:

 int [][] carte;
 public Grille(int pNbrL,int pNbrC){      //constructor 
    nbrL=pNbrL;
    nbrC=pNbrC;

    carte = new int[nbrL][nbrC];

    //rest of the constructor
}
在构造函数中:

 int [][] carte;
 public Grille(int pNbrL,int pNbrC){      //constructor 
    nbrL=pNbrL;
    nbrC=pNbrC;

    carte = new int[nbrL][nbrC];

    //rest of the constructor
}

欢迎使用Stack Overflow!看起来您可能需要学习使用调试器。请自便。如果以后仍有问题,请将您的问题更具体地说明您需要什么帮助。没问题!它不起作用,因为您在nbrL和nbrC where 0之前(在构造函数之前)初始化了它所以你基本上创建了一个空数组。