Besoin d'aide en java

Ourii -  
 Ourii -
Bonjour, voici mon code:

public class Jeux
{
public static void main(String[] args)
{

int i,j;

int hauteur;
int largeur;


/*Recuperation des données*/
hauteur=Integer.parseInt(args[0]);
largeur=Integer.parseInt(args[1]);



char[][] tableauVide= new char[hauteur][largeur];

tableauVide= creerTableau(hauteur,largeur);
System.out.print("Voici le tableau: "+tableauVide);
}



public static char[][] creerTableau(int h, int l)
{

char[][] tab= new char[h][l];
int i,j;

for(i=0; i<h; i++)
{
for(j=0; j<l; j++)
tab[i][j]='*';

}

return tab;

}

}


Je voudrais biensûr qu'il m'affiche un rectangle plein d'étoiles. Ça compile mais affiche ceci: Voici le tableau: [[C@12b6651

Que faire svp?
A voir également:

4 réponses

arth Messages postés 9374 Date d'inscription   Statut Contributeur Dernière intervention   1 293
 
Bonjour,

Lorsque tu fais ton System.println, tu lui demande d'afficher un tableau de 2 dimensions en 1 seule fois, ce qui n'est pas un entier ni une String ou tout autre élément découlant qui pourrait être affiché tel quel.

Ce qui se passe, lorsque tu lui demande d'afficher ça, c'est qu'il affiche l'adresse du tableau, enfin il me semble que c'est ça, en quelque sorte l'adresse mémoire du tableau, enfin je répète à ce qu'il me semble :)

Mais en aucun cas tu ne vas pouvoir afficher ce tableau tel quel ou tout autre tableau via un System.out.println, il te faut pour cela créer une fonction ou faire un for qui va parcourir ton tableau et afficher les caractères *.

Bien qu'il n'y ait pas réellement besoin de tableau, mais c'est un début ;)
1
scriptiz Messages postés 1424 Date d'inscription   Statut Membre Dernière intervention   425
 
arth a tout a fait raison, lorsque tu affiche un objet dans un println sans avoir écrit un toString() pour cet objet, et en l'occurence ici tu utilise un objet de type primitif (un tableau) donc tu ne peux pas en modifier le toString().

Et ce code pour afficher ton tableau pourrait être quelque chose comme ça (dernière fonction : afficherTableau(...) tout en bas) :

public class Jeux 
{ 
	public static void main(String[] args) 
	{ 
		int i,j; 
		
		int hauteur; 
		int largeur; 
		
		/* Recuperation des données */
		if(args.length >= 2)
		{ 
			hauteur=Integer.parseInt(args[0]); 
			largeur=Integer.parseInt(args[1]); 
		}
		else
		{
			// Dans le cas où un seul paramètre est passé on crée un tableau carré
			if(args.length == 1)
				hauteur = Integer.parseInt(args[0]);
			else
				hauteur = 3;	// Si aucun paramètre ou plus que 2, on instancie le tableau à 3*3
				
			largeur = hauteur;
		}
		
		char[][] tableauVide= new char[hauteur][largeur]; 
		
		tableauVide= creerTableau(hauteur,largeur); 
		System.out.print("Voici le tableau:\n"+afficherTableau(tableauVide)); 
	} 
	
	
	
	public static char[][] creerTableau(int h, int l) 
	{ 
		char[][] tab= new char[h][l]; 
		int i,j; 
		
		for(i=0; i<h; i++) 
		{ 
			for(j=0; j<l; j++) 
				tab[i][j]='*'; 
		} 
		
		return tab; 
	} 
	
	public static String afficherTableau(char[][] tableau)
	{
		String r = "";
		for(int i = 0; i < tableau.length; i++)
		{
			for(int j = 0; j < tableau[i].length; j++)
			{
				r += tableau[i][j] + " ";
			}
			r += "\n";
		}
		return r;
	}
}
1
Ourii
 
Merci beaucoup pour ces explications... En fait, je suis obligée de mettre les caractères dans un tableau (à la demande du professeur), pourrais tu me dire stp comment tu "codes" cette fonction qui doit afficher mon tableau, au moins un aperçu de code que je completerai... merci d'avance...
0
Ourii
 
Wow merci! Ça répond parfaitement à mon problème, je viens de le tester et c'est exactement ce que je voulais... merci beaucoup!

Je vais continuer à faire mon exercice (il est pas mal long) et si j'ai d'autres questions, je viendrais vous embeter! Héhé merci encore!
0