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

avec Java Discussion :

Erreur de compilation avec Java


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 69
    Par défaut Erreur de compilation avec Java
    Bonjour,
    J'ai un petit souci lors de la compilation d'un algo pour générer des valeurs aléatoires dans une matrice. Je ne vois pas d'où vient le problème.

    Voici le code :

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    // Génération aléatoire de valeurs.
    public class generaleatoire{
        public static final int MAX= 20 ;
     
     
          public static void creation(int[][]mat){
          int i,j;
          int N=mat.length;
          int M=mat.length;
     
          for(i=0;i<N;i++){
              for(j=0;j<M;j++){
           System.out.print(mat[i][j]+"\t");
              }
                System.out.println();
            }
          }
     
          public static void remplissagemat(int[][]mat){
          int i,j,cpt;      
    	cpt=0;
    	while(cpt!=5){
    		i=(int) (Math.random()*(MAX+1));
    		j=(int) (Math.random()*(MAX+1));
     
    	if (mat[i][j]=0){
    		mat[i][j]=(int) (Math.random()*(MAX+1));
    		cpt=cpt+1;
     
            }
          }
        }
     
     
    //Programme principal.
      public static void main(String [] args){
      System.out.println("Donnez la taille du plateau en commencant par le nombre de lignes puis en second le nombre de colonnes");
      int N=Clavier.readInt();
      int M=Clavier.readInt();
      int[][] mat1= new int[N][M];
      System.out.println("Le plateau est le suivant :");
      remplissagemat(mat1);
      creation(mat1);
      }
    }
    Merci d'avance pour votre aide. Bon dimanche.

  2. #2
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut
    Tu peux preciser ou est l'erreur et quel est elle ? ma boulle de cristal est au SAV

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 69
    Par défaut
    Voici l'erreur :
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 16
    at generaleatoire.remplissagemat(generaleatoire.java:22)
    at generaleatoire.main(generaleatoire.java:37)

    Merci d'avance.

  4. #4
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 50
    Par défaut
    Cette erreure t'indique que tu cherche a acceder un élément de ton tableau qui n'existe pas car tu es est allé trop loin dans l'incrémentation de tes indices.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	while(cpt!=5){
    		i=(int) (Math.random()*(MAX+1));
    		j=(int) (Math.random()*(MAX+1));
     
    	if (mat[i][j]=0){
    		mat[i][j]=(int) (Math.random()*(MAX+1));
    		cpt=cpt+1;
     
            }
    L'erreur vient vraisemblablement du choix de ton i et de ton j.

    Tules choisis entre 1 et 20 alors que ta matrice peut etre bien differente.

    tu devrait avoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	while(cpt!=5){
    		i=(int) (Math.random()*(N+1));
    		j=(int) (Math.random()*(M+1));
     
    	if (mat[i][j]=0){
    		mat[i][j]=(int) (Math.random()*(MAX+1));
    		cpt=cpt+1;
     
            }
    Ca devrait mieux marcher.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 69
    Par défaut
    Merci beaucoup je vais essayer. Sinon pour l'edit De mon message je serai prudent par la suite merci. Bonne soirée.

  6. #6
    Membre éprouvé Avatar de bobmidou
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2008
    Messages : 121
    Par défaut
    Salut

    Ton i et j prennent des valeurs supérieur à N et M
    voici une autre façon:
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    public class generaleatoire{
        public static final int MAX = 20 ;
     
     
          public static void creation(int[][]mat){
          int i,j;
          int N=mat.length;
          int M=mat.length;
     
          for(i=0;i<N;i++){
              for(j=0;j<M;j++){
           System.out.print(mat[i][j]+"\t");
              }
                System.out.println();
            }
          }
     
          public static void remplissagemat(int[][]mat)
          {
          	int i,j;
          	int N=mat.length;
          	int M=mat.length;      
     
    	  for(i=0;i<N;i++)
    	  {
              for(j=0;j<M;j++)
              {
              	mat[i][j]=(int) (Math.random()*MAX)+1;
              }
          }
        }
     
     
    //Programme principal.
      public static void main(String [] args){
      System.out.println("Donnez la taille du plateau en commencant par le nombre de lignes puis en second le nombre de colonnes");
      int N=Clavier.readInt();
      int M=Clavier.readInt();
      int[][] mat1= new int[N][M];
      System.out.println("Le plateau est le suivant :");
      remplissagemat(mat1);
      creation(mat1);
      }
    }
    Bonne chance

Discussions similaires

  1. Erreur de compilation rapport java avec Jasper report
    Par Sylvies209 dans le forum NetBeans
    Réponses: 6
    Dernier message: 31/07/2010, 14h22
  2. Erreur de connexion avec Java
    Par webmister dans le forum Connexions aux bases de données
    Réponses: 3
    Dernier message: 27/03/2006, 12h59
  3. Erreur de compil avec Outp
    Par sixon dans le forum C++
    Réponses: 2
    Dernier message: 27/02/2006, 15h01
  4. Erreur de compilation avec SWITCH et CASE
    Par barbarello dans le forum C++
    Réponses: 4
    Dernier message: 21/01/2006, 21h47
  5. [FreePascal]Erreur de compilation avec Dev-Pascal
    Par youngeikichi dans le forum Free Pascal
    Réponses: 3
    Dernier message: 17/02/2005, 14h22

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