Tableau

alex64100 Messages postés 25 Date d'inscription jeudi 7 août 2008 Statut Membre Dernière intervention 8 novembre 2009 - 8 nov. 2009 à 17:03
solo9saad Messages postés 9 Date d'inscription dimanche 17 mai 2009 Statut Membre Dernière intervention 6 décembre 2009 - 9 nov. 2009 à 13:25
bonjour,

je dois réaliser un programme qui accepte un tableau d'entiers saisi au clavier et qui le trie.
ma méthode trie est bonne.
le problème vient de la saisie des données, le compilo m'affiche :


Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at EXO1.main(EXO1.java:72)

voici le code :

import java.util.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.*;
public class EXO1 {

public static void initCarre (int [] tab) {

int i;

for(i= 0; i< tab.length; i++) {

tab[i] = i * i;
}
}

public static void affiche (int [] tab){

for(int i= 0; i< tab.length; i++){

System.out.println (tab[i] + " ");

}
}

// Méthode de tri d'un tableau d'entiers

public static void trie (int []tab) {

boolean permut;
int inter;

do {

permut = false;

for(int i = 0; i< tab.length -1; i++){

if(tab[i] > tab[i + 1]){

inter = tab[i];
tab[i] = tab[i + 1];
tab[i + 1] = inter;
permut = true;

}

}
} while (permut != false);



}


public static void main (String [] args){


int ind;
int i= 0;
int [] tab = new int [i];
Scanner sc = new Scanner(System.in);


System.out.println ("Veuillez saisir la dimension du tableau : ");
ind = sc.nextInt();

for (i= 0; i < 10; i++) {

System.out.println("Veuillez saisir le chiffre :"+i);
tab[i] = sc.nextInt();


}
trie(tab);
affiche(tab);
}
}

pouvez-vous m'aidez svp


merci
Alex

5 réponses

alex64100 Messages postés 25 Date d'inscription jeudi 7 août 2008 Statut Membre Dernière intervention 8 novembre 2009
8 nov. 2009 à 17:19
Petite coquille :

for (i= 0; i < ind; i++) {

System.out.println("Veuillez saisir le chiffre :"+i);
tab[i] = sc.nextInt();


}
0
Utilisateur anonyme
9 nov. 2009 à 02:36
Salut,

Ici:
 int i= 0; 
 int [] tab = new int [i];

Tu initialises ton tableau avec une longueuer 0.
Il faut que tu le déclares sans lui affecter sa longueur:

 int [] tab;

Et ici seulement, tu donnes la dimension:

 System.out.println ("Veuillez saisir la dimension du tableau : "); 
 ind = sc.nextInt(); 
 tab = new int [ind];

Cordialement,



...\ Dan /...
0
Utilisateur anonyme
9 nov. 2009 à 02:52
Ps,
J'ai oublié de t'indiquer une méthode simple pour trier un tableau (qui contient des valeurs comparables):
//....
   import java.util.Arrays;
//....
//...   
// tri du tableau (en ordre croissant):
   Arrays.sort(tab);



...\ Dan /...
0
Utilisateur anonyme
9 nov. 2009 à 03:23
Re PS,

Ne pas oublier de changer:

for (i= 0; i < 10; i++) {

en:

for (i= 0; i < tab.length; i++) {



...\ Dan /...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
solo9saad Messages postés 9 Date d'inscription dimanche 17 mai 2009 Statut Membre Dernière intervention 6 décembre 2009
9 nov. 2009 à 13:25
salut;
voici le code:


import javax.swing.*;
import java.util.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.*;
public class EXO1 {

public static void initCarre (int [] tab) {

int i;

for(i= 0; i< tab.length; i++) {

tab[i] = i * i;
}
}

public static void affiche (int [] tab){

for(int i= 0; i< tab.length; i++){

JOptionPane.showMessageDialog(null, tab[i]);

}
}

// Méthode de tri d'un tableau d'entiers

public static void trie (int []tab) {

boolean permut;
int inter;

do {

permut = false;

for(int i = 0; i< tab.length -1; i++){

if(tab[i] > tab[i + 1]){

inter = tab[i];
tab[i] = tab[i + 1];
tab[i + 1] = inter;
permut = true;

}

}
} while (permut != false);



}


public static void main (String [] args){



int i,ind;
String x=JOptionPane.showInputDialog("Veuillez saisir la dimension du tableau : ");
ind = Integer.parseInt(x);
int [] tab = new int [ind];
Scanner sc = new Scanner(System.in);




for (i= 0; i < ind; i++) {

x=JOptionPane.showInputDialog("Veuillez saisir le chiffre :"+i);
tab[i] = Integer.parseInt(x);


}
trie(tab);
affiche(tab);
}
}
0
Rejoignez-nous