2013-04-11 8 views
5

Hey j'ai une question que j'ai essayé de comprendre pendant deux heures maintenant, je dois utiliser des boucles imbriquées pour imprimer laNest boucles, ne peut pas comprendre comment coder ce

-----1----- 
    ----333---- 
    ---55555--- 
    --7777777-- 
    -999999999- 

suivante C'est ce que j'ai jusqu'ici.

public static void Problem6() { 
     System.out.println("Problem 6:"); 
     for (int i = 1; i <= 5; i++) { 
      for (int j = 5; j >= i; j--) { 
       System.out.print("-"); 
      } 
      for (int j = 1; j <= 9; j += 2) { 
       System.out.print(j); 
      } 
      for (int j = 5; j >= i; j--) { 
       System.out.print("-"); 
      } 
      System.out.println(); 
     } 
    } 

Voici ce qu'il imprime

-----13579----- 
    ----13579---- 
    ---13579--- 
    --13579-- 
    -13579- 
+0

Vous devez changer votre boucle centrale de deux façons: Faites le nombre d'itérations et la valeur imprimée sur les deux dépend de la valeur de 'i'. –

+0

vous êtes vraiment proche. le problème est dans le test dans la deuxième boucle for imbriquée. il vaudrait mieux que tu le trouves toi-même plutôt que d'obtenir la réponse. –

+0

Aimerais le comprendre moi-même, sauf que c'est bientôt dû et j'ai déjà passé beaucoup de temps dessus, je sens que c'est si évident que je ne peux pas le voir. – Brent

Répondre

8

Vous avez le bon nombre de traits, vous ne sont tout simplement pas l'impression le numéro correctement. Examinons pourquoi:

Quelle boucle imprime les nombres? La 2ème boucle imbriquée.

Que fait-il? Il imprime jj s'étend de 1 à 9 et j est incrémenté par 2 itérations de la boucle. En d'autres termes, 1, 3, 5, 7, 9, ce qui est confirmé dans votre sortie

Que voulez-vous faire? Eh bien regardons la sortie désirée. Vous voulez 1 à imprimer une fois sur le d'abord première ligne. Vous voulez 3 à imprimer trois fois sur le troisième la ligne suivante. Vous voulez 5 à imprimer cinq fois fois sur le cinquième ligne suivante après cela. Etc.

Remarquez-vous un motif? Vous voulez que la boucle nous l'avons mentionné ci-dessus pour imprimer le même nombre (1, 3, 5 ... i) comme le nombre de fois (1, 3, 5, ... i).

modifier Whooops je mal lu la sortie. Ma réponse est encore très similaire à avant, mais j'ai menti sur quelle ligne vous imprimez quoi. Il est toujours 3trois fois fois, 5cinq fois mais des lignes différentes. Le moyen le plus simple de passer de ma solution à la solution réelle est de remarquer que sur les lignes paires ... vous ne faites rien. Vous pourriez même écrire votre solution de cette façon.

Un autre conseil est que vous devriez simplement vous concentrer sur l'obtention des numéros sur chaque ligne droite et les tirets séparément. Il est probable que vous allez bousiller le nombre de tirets lorsque vous fixez les numéros sur chaque ligne, mais alors vous réaliserez comment corriger les tirets facilement.

+0

Oui, vous avez raison. J'ai ajouté un edit. – rliu

+0

OUI, je l'ai compris, j'ai juste changé ma boucle principale à 10 et compté par 2 à partir de 1, donc ça s'est passé 1, 3, 5 7, 9 – Brent

+0

Ouais c'est ce que je voulais. J'essaie de comprendre comment modifier ma réponse afin qu'elle soit techniquement correcte en plus d'aider conceptuellement. – rliu

-1
public class pattern 
{ 
    public static void main ( ) 
    { 
     for (int i = 1;i<=9;i+=2) 
     { 
      for(int b = 9;b>=i;b-=2) 
      { 
       System.out.print(" "); 
      } 
      for(int j =1;j<=i;j++) 
      { 
       System.out.print(i); 
      } 
      System.out.println(); 
     } 
    } 
} 
Questions connexes