IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Collection et Stream Java Discussion :

Problème pour initialiser un Array


Sujet :

Collection et Stream Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Points : 147
    Points
    147
    Par défaut Problème pour initialiser un Array
    Bonjour,

    J'ai un problème pour initialiser mon Array. Je veux avoir résultat suivant:
    1 0 0 0 0
    0 1 0 0 0
    0 0 1 0 0
    0 0 0 1 0
    0 0 0 0 1
    Mais j'ai erreur en compilant mon programme :
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
    at TestArrays2.main(TestArrays2.java:17)
    voilà mon prg
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    public class TestArrays2 
    {
    	public static void main(String[]args)
    	{
    		int i;
    		int j;
     
    		int table [][]=new int [5][5];
    		for(i=0;i<5;i++)
    		{
    			for(j=0;j<5;j++)
    			{
    				if(i==j)
    					table[i][j]=1;
    				else
    					table[i][j]=0;	
    			}
    			System.out.print(i);
    			System.out.print(j);
    		}
    	}
    Veuillez m'aider s'il vous plait. Voici le résultat que je obtiens :
    0515253545
    Mais je veux :
    1 0 0 0 0
    0 1 0 0 0
    0 0 1 0 0
    0 0 0 1 0
    0 0 0 0 1

  2. #2
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Points : 13 670
    Points
    13 670
    Par défaut
    Mets des accolades pour ton if .. else :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (i==j) {
      table[i][j]=1;
    } else {
      table[i][j]=0;
    }
    Ensuite, ton System.out n'affiche pas la bonne variable, tu dois plutôt afficher tab[i][j]. Et tu dois le faire juste après le if .. else.
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Points : 147
    Points
    147
    Par défaut
    même en corrigeant comme suivant,
    j'obtiens le résultat ainsi:
    0
    123401
    234012
    340123
    401234
    mais je veux comme suivant:
    1 0 0 0 0
    0 1 0 0 0
    0 0 1 0 0
    0 0 0 1 0
    0 0 0 0 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    public class TestArrays2 
    {
    	public static void main(String[]args)
    	{
    		int i;
    		int j;
     
    		int table [][]=new int [5][5];
    		for(i=0;i<5;i++)
    		{
    			for(j=0;j<5;j++)
    			{
    				if(i==j)
    				{
    					table[i][j]=1;
    					System.out.println(i);
    				}
    				else
    				{
    					table[i][j]=0;
    					System.out.print(j);
    			    }
    		}
    	}
    }}

  4. #4
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Points : 13 670
    Points
    13 670
    Par défaut
    Comme je l'ai dis :
    Citation Envoyé par Robin56 Voir le message
    Ensuite, ton System.out n'affiche pas la bonne variable, tu dois plutôt afficher tab[i][j]. Et tu dois le faire juste après le if .. else.
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Points : 147
    Points
    147
    Par défaut
    en ajoutant comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    for(i=0;i<5;i++)
    		{
    			for(j=0;j<5;j++)
    			{
    				if(i==j)
    				{
    					table[i][j]=1;
    					System.out.println(table[i][j]);
    				}
    				else
    				{
    					table[i][j]=0;
    					System.out.print(table[i][j]);
    			    }
    		}
    j'obtiens le résultat ainsi:
    1
    000001
    000001
    000001
    000001

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 547
    Points : 21 602
    Points
    21 602
    Par défaut
    Ça m'étonnerait.

    Montre-nous le vrai code, et montre-nous ce qu'il renvoie vraiment.

    (Pour information le code en question renvoie 25 lignes, chacune composée d'un seul caractère, soit 1 ou soit 0.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Points : 147
    Points
    147
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    public class TestArrays2 
    {
       public static void main(String[]args)
    	{
    		int i;
    		int j;
     
    		int table [][]=new int [5][5];
    		for(i=0;i<5;i++)
    		{
    			for(j=0;j<5;j++)
    			{
    				if(i==j)
    				{
    					table[i][j]=1;
    					System.out.println(table[i][j]);
    				}
    				else
    				{
    					table[i][j]=0;
    					System.out.print(table[i][j]);
    			    }
    		}
    	}
    }}
    resultat est
    1
    000001
    000001
    000001
    000001

  8. #8
    Membre éclairé

    Profil pro
    Technicien
    Inscrit en
    Février 2009
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Février 2009
    Messages : 338
    Points : 791
    Points
    791
    Par défaut
    Bonsoir,

    Le tableau est initialisé correctement comme l'a précisé Thelvin.
    Il s'agit de l'affichage qui est faux : il s'agit d'un tableau de 5x5 et ce qui est affiché est 1 + 6x4.

    Remplace le println() par un print() et rajoute un println() juste après le"for(j=0;j<5;j++){}".
    Le tableau devrait alors être affiché en 5x5 comme tu l'attends.

    Benoit

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Points : 147
    Points
    147
    Par défaut
    merci beaucoup,j'ai corrigé mon erreur

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème pour initialiser ma combo
    Par zatari dans le forum JSF
    Réponses: 2
    Dernier message: 16/09/2011, 18h34
  2. Réponses: 1
    Dernier message: 27/11/2009, 16h32
  3. Problème pour initialiser Hibernate Annotations
    Par ygrim dans le forum Hibernate
    Réponses: 7
    Dernier message: 22/02/2008, 19h38
  4. [JSP] Problème pour passer un array comme paramètre
    Par MxPx_23 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 06/06/2006, 18h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo