Figure d'étoile java

Résolu
sysy -  
 sysy -
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?
Configuration: Windows XP
Internet Explorer 7.0

1 réponse

  1. Marco la baraque Messages postés 1030 Statut Contributeur 329
     
    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
    1. sysy
       
      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
      1. Marco la baraque Messages postés 1030 Statut Contributeur 329 > sysy
         
        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
      2. sysy > Marco la baraque Messages postés 1030 Statut Contributeur
         
        merci beaucoup!! ça marche.
        0
    2. sysy
       
      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