我在 java 中制作的 class(关于二维数组)有问题
There is something wrong with this class (about a 2D array) i made in java
以下代码在控制台中声明和初始化并打印二维数组:
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)
所以,问题是,我想通过一个名为 :
的 class 使用此代码
Grille.jave
所以我在下面为 Class "Grille"
尝试了这段代码
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();
}
}
}
并且 class 的主要方法是:
UI.java
它的代码如下:
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 方法打印它时,它工作正常但是当我使用构造函数填充和声明数组时 "Grille"和打印它的方法 "afficher",通过创建 class "Grille" 的对象 "G" 然后在 main 方法中调用方法 "afficher",它确实打印消息 "The Grill" 但不是像前面代码中那样的数组 ?
我就是找不到原因所以请帮忙!!
提前谢谢你。 (对不起,如果这是一个愚蠢的问题,我是 java 和一般编程的新手)
我是这个网站的新手,所以如果我的 post 有误,请原谅我并帮助我更正它。
在构造函数中初始化您的 carte 数组!
在构造函数之前:
int [][] carte;
在构造函数中:
public Grille(int pNbrL,int pNbrC){ //constructor
nbrL=pNbrL;
nbrC=pNbrC;
carte = new int[nbrL][nbrC];
//rest of the constructor
}
以下代码在控制台中声明和初始化并打印二维数组:
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)
所以,问题是,我想通过一个名为 :
的 class 使用此代码Grille.jave
所以我在下面为 Class "Grille"
尝试了这段代码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();
}
}
}
并且 class 的主要方法是:
UI.java
它的代码如下:
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 方法打印它时,它工作正常但是当我使用构造函数填充和声明数组时 "Grille"和打印它的方法 "afficher",通过创建 class "Grille" 的对象 "G" 然后在 main 方法中调用方法 "afficher",它确实打印消息 "The Grill" 但不是像前面代码中那样的数组 ? 我就是找不到原因所以请帮忙!!
提前谢谢你。 (对不起,如果这是一个愚蠢的问题,我是 java 和一般编程的新手) 我是这个网站的新手,所以如果我的 post 有误,请原谅我并帮助我更正它。
在构造函数中初始化您的 carte 数组!
在构造函数之前:
int [][] carte;
在构造函数中:
public Grille(int pNbrL,int pNbrC){ //constructor
nbrL=pNbrL;
nbrC=pNbrC;
carte = new int[nbrL][nbrC];
//rest of the constructor
}