Figure d'étoile java

Résolu/Fermé
sysy - 8 nov. 2008 à 20:07
 sysy - 8 nov. 2008 à 23:56
Bonjour,je débute en java , j'essaye de réaliser une figure avec des étoile en forme de croix qui ressemble à ceci (sans prendre en compte les points):

* ........ *
...* ...*
......*
...*... *
* .........*

Voici mon programme:

class essai {

public static void main(String[] args){
int max =9;
int i=1;
int j=0;
while(i<=100){
j=1;
while(j<=max){
if(i==j){System.out.print("*");}
else {if(j==max){System.out.println("*");max- -;}
else {System.out.print(" ");}}

j++;}

i++;}

}
}

je n'obtiens pas vraiment la figure désirée,je ne sais pas où est l'erreur pouvez vous m'aidez?
A voir également:

1 réponse

Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 329
8 nov. 2008 à 20:34
Bonsoir,
Essaie avec ceci :
while(i<=max){
 j=1; 
 while(j<=max){
  if((i == j) || (j == (max - i + 1))) {
   System.out.print("*");
  }
  else {
   System.out.print(" ");
  }
  j++;
 }
 i++;
}


Pourquoi as-tu mis "tant que i est inférieur ou égal à 100"? Ta figure est symétrique (horizontale, verticale, centrale, tout ce qu'on veut quoi), donc il est logique que ton parcours en longueur (j) soit aussi long que ton parcours en hauteur (i).

Conseil : essaie de commencer tes boucles à 0, c'est beaucoup plus facile pour les informaticiens (et donc quand on écrit un programme en général on a beaucoup moins de bugs dûs aux dépassements d'index car on a l'habitude).
0
bonsoir,
merci pour ta réponse, mais il y a un problème tout s'affiche sur une ligne cependant on remarque bien une symétrie entre les étoiles. il manque peut être un "System.out.println" quelque part ....
(je travaille sous éclipse)
0
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 329 > sysy
8 nov. 2008 à 23:50
Effectivement, entre chaque ligne :

while(i<=max){
 j=1; 
 while(j<=max){
  if((i == j) || (j == (max - i + 1))) {
   System.out.print("*");
  }
  else {
   System.out.print(" ");
  }
  j++;
 }
 i++;
 System.out.println("");
}


Désolé.
0
sysy > Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009
8 nov. 2008 à 23:56
merci beaucoup!! ça marche.
0
j'ai modifier le programme:

public class essai2 {

public static void main(String[] args){
int max =9;
int i=1;
int j=0;
while(i<=max){
j=1;
while(j<=max){
if((i == j) || (j == (max - i + 1))) {
System.out.print("*");
}
else {if (j==max){System.out.println();}
else {
System.out.print(" ");
}}
j++;
}
i++;

}
}}

j'obtient la figure , sauf qu'il y a une ligne qui est décalé par râpport au autre:

*.........*...*...*
......*
...*...*
*.........*
0