Java:mon prg n'affiche pas le résultat

Résolu
Bonjour,
mon prg n'affiche pas le résultat
public class TestArrays3 
{
  final static int rows=10;
  final static int columns=20;
  public static void main(String[]args)
  {
	 int product[][]=new int [rows][columns]; 
	 int rows=10;
	 int columns=20;
	 System.out.println("MULTIPLICATION TABLE");
	 System.out.println("");
	 int i,j;
	 for(i=10;i<rows;i++)
	 {
		 for(j=10;j<columns;j++)
		 {
			 product[i][j]=i*j;
			 System.out.println(""+product[i][j]);
		 }
		 System.out.println(""); 
	 }
  }
}


resulat affiche que
MULTIPLICATION TABLE

aidez moi svp

9 réponses

  1. Modérateur
    Parce que tu as initialisé i à 10, en lui imposant d'être toujours inférieur à rows qui vaut 10, en conséquence il ne rentre jamais dans la boucle !
    Initialises i et j avec 0, ou 1, mais pas 10 !
    1. même en changeant comme ça ,s'affiche pas le résultat
      aidez moi svp
       int i,j;
      	 for(i=0;i<rows;i++)
      	 {
      		 for(j=1;j<columns;j++)
      		 {
      			 product[i][j]=i*j;
      			 System.out.print(""+product[i][j]);
      		 }
      
      1. Modérateur
        Avec ce code, ça devrait s'afficher ! Vérifies que tu as bien changé ton code comme tu l'as mis ici.

        Remarque :
        1) le ""+ est inutile dans le print, tu peux directement faire print(product[i][j]) car la méthode print sait afficher des entiers (en fait elle sait afficher tout les objets grâce à la méthode toString de Object...)
        2) de même tu n'es pas obligé de mettre "" dans le println, tu peux faire directement println() et ça fera exactement pareil (mais c'est plus joli)
        3) dans ton cas précis, il vaudrait mieux rajouter un affichage \t pour séparer les colonnes

        4) même si ce n'est pas faux il est plus logique d'écrire int[][] product,car en Java les tableaux sont des classes à part entière contrairement au int product[][] qui fait penser aux pointeurs du C
    2. public class TestArrays3 
      {
        final static int rows=0;
        final static int columns=20;
        public static void main(String[]args)
        {
      	 //int product[][]=new int [rows][columns];
      	 int[][] product=new int [rows][columns];
      	 //int rows=0;
      	 //int columns=;
      	 System.out.println("MULTIPLICATION TABLE");
      	 System.out.println("");
      	 int i,j;
      	 for(i=0;i<rows;i++)
      	 {
      		 for(j=1;j<columns;j++)
      		 {
      			 product[i][j]=i*j;
      			 System.out.print(product[i][j]);
      		 }
      		 System.out.println(""); 
      	 }
        }
      }
      

      j'ai changé mon code
      résultat est toujours

      MULTIPLICATION TABLE
      1. Modérateur
        Sauf que depuis tout à l'heure tu as changé la valeur de rows en la mettant à 0, et tu as donc le même problème tu initialises i à 0 en lui imposant d'être inférieur à 0 donc tu ne rentres pas dans la boucle.
    3. bonjour
      tu n'a pas compléter le println dans cette instruction
      System.out.print(product[i][j]);

      merci
      1. vous voulez que je fasse comme ça
        int i,j; 
          for(i=1;i<rows;i++) 
          { 
           for(j=1;j<columns;j++) 
           { 
            product[i][j]=i*j; 
            System.out.print(product[i][j]+"\t"); 
           } 
        

        en faisant comme ça résultat est la même
        1. Modérateur
          Faire comme ça oui, mais en gardant la valeurs de rows que tu avais au départ c'est à dire 10, et non pas 0 !
      2. tu n'a pas compléter le println dans cette instruction
        System.out.print(product[i][j]); 
        

        expliquez moi s'il vous plaît
        même en écrivant comme suivant je n'ai pas le résultat
        public class TestArrays3 
        {
          final static int rows=10;
          final static int columns=20;
          public static void main(String[]args)
          {
        	 //int product[][]=new int [rows][columns];
        	 int[][] product=new int [rows][columns];
        	 int rows=10;
        	 int columns=20;
        	 System.out.println("MULTIPLICATION TABLE");
        	 System.out.println("");
        	 int i,j;
        	 for(i=10;i<rows;i++)
        	 {
        		 for(j=20;j<columns;j++)
        		 {
        			 product[i][j]=i*j;
        			 //System.out.print(product[i][j]+"\t");
        		 }
        		 //System.out.println(""); 
        		 System.out.print(product[i][j]+"\t");
        	 }
          }
        }
        
        1. merci pour votre aide
          je veux qu'il s'affiche comme ça:

          MULTIPLICATION TABLE
          100 110 120 130 140 150 160 170 180 190
          110 121 132 143 154 165 176 187 198 209
          120 132 144 156 168 180 192 204 216 228
          130
          140
          150
          160
          170
          180
          190 ... ... ... ... ... ... ... ... ... ... ... ... ... ... 361

          merci d'avance
          1. Modérateur
            Je t'ai déjà expliqué au moins deux fois d'où venait le problème, alors je le fais une troisième fois, mais après j'arrête, apprends à lire les réponses qu'on te donne !

            Lorsque tu fais for(i=10;i<rows;i++) tu imposes que i commence à 10, or rows étant égal à 10 également, ça signifie que tu imposes que i soit inférieur à 10, et comme il y a incompatibilité, la boucle for s'arrête avant même qu'elle n'ait commencé ! Donc change tes bornes...
        2. corrigé mon prg
          public class TestArrays3 
          {
            final static int rows=20;
            final static int columns=20;
            public static void main(String[]args)
            {
          	 System.out.println("MULTIPLICATION TABLE");
          	 System.out.println("");
          	 int i,j;
          	 for(i=10;i<rows;i++)
          	 {
          		 for(j=10;j<columns;j++)
          		 {
          			 System.out.print(i*j+"\t");	 
          		 }
          		 System.out.println(""); 
          	 }
            }
          }
          
          1. regardez bien le prg a changé
            j'ai récupéré mon résultat;
            MULTIPLICATION TABLE
            100 110 120 130 140 150 160 170 180 190
            110 121 132 143 154 165 176 187 198 209
            120 132 144 156 168 180 192 204 216 228
            130
            140
            150
            160
            170
            180
            190 ... ... ... ... ... ... ... ... ... ... ... ... ... ... 361