A voir également:
- Erreur indice dans mon programme
- Erreur 0x80070643 - Guide
- Indice téléphonique - Guide
- Programme demarrage windows 10 - Guide
- Programme (x86) ✓ - Forum Windows
2 réponses
laurie071298
Messages postés
205
Date d'inscription
lundi 28 mai 2007
Statut
Membre
Dernière intervention
5 octobre 2011
49
15 mars 2008 à 14:25
15 mars 2008 à 14:25
une erreur de type nullPointerException n'a rien a voir avec les indices de tableaux qui sont de type array out of ...
une null pointer exception signifie que tu as un objet qui ne vaut rien qui ne référencie rien .
Pour les éviter il vaut mieux initialiser tes champs et a tes vairables.
une null pointer exception signifie que tu as un objet qui ne vaut rien qui ne référencie rien .
Pour les éviter il vaut mieux initialiser tes champs et a tes vairables.
Salut,
en regardant assez rapidement le code ... ma remarque c'est qu'il ne faut pas mettre autant de chose sur la même ligne, c'est catastrophique pour la lisibilité. !
if(Champ.f(tab[k],1).compareTo(Champ.f(tab[imin],1))<0) BEURK !
Par contre ça devrait pouvoir s'écrire comme ceci en rajoutant une parenthèse, même si c'est affreux à voir :
if( (Champ.f(tab(K],1)).compareTo(Champ.f(tab[imin],1)) < 0)
car la méthode compareTo est une méthode de l'objet (Champ.f(tab(K],1)) et non pas de f(tab[k],1) ... :-)
Bon courage.
en regardant assez rapidement le code ... ma remarque c'est qu'il ne faut pas mettre autant de chose sur la même ligne, c'est catastrophique pour la lisibilité. !
if(Champ.f(tab[k],1).compareTo(Champ.f(tab[imin],1))<0) BEURK !
Par contre ça devrait pouvoir s'écrire comme ceci en rajoutant une parenthèse, même si c'est affreux à voir :
if( (Champ.f(tab(K],1)).compareTo(Champ.f(tab[imin],1)) < 0)
car la méthode compareTo est une méthode de l'objet (Champ.f(tab(K],1)) et non pas de f(tab[k],1) ... :-)
Bon courage.
et comme ça c plus joli ? en affectant Champ.f(tab[k],1) dans a et Champ.f(tab[imin],1) dans b
mais ça marche pas mieux
public class Trierplots
{
public static void main (String [] zz)
{
int i, t, r=0, k=0, n=0, l=0, h ;
String chaine = "" ;
String [] tabPlots, tabTotal, tabTrie ;
Fic g = new Fic() ;
g.open("Vols.txt","r") ;
while(chaine!=null)
{
chaine = g.read() ;
n = n+1 ;
}
g.close() ;
g.open("Vols.txt","r") ;
for(i=0;i<n-1;i++)
{
chaine = g.read() ;
tabPlots = GenererPlots.f(chaine) ;
l=tabPlots.length ;
k = k+l ;
}
g.close() ;
tabTotal = new String [k] ;
g.open("Vols.txt","r") ;
for(i=0;i<n-1;i++)
{
chaine = g.read() ;
tabPlots = GenererPlots.f(chaine) ;
h = tabPlots.length ;
for(t=0;t<h;t++)
{
tabTotal[t+r] = tabPlots[t] ;
}
r = r + tabPlots.length ;
}
g.close() ;
tabTotal = new String [k] ;
tabTrie = new String [k] ;
tabTrie = f(tabTotal) ;
for(i=0;i<tabTrie.length;i++)
{
X.println(tabTrie[i]) ;
}
System.exit(0) ;
}
public static String [] f(String [] tab)
{
int n = tab.length, i=0, k=0, imin=0 ;
String a=null, b=null, tampon=null ;
for(i=0;i<n-1;i++)
{ imin = i ;
for(k=i+1;k<n;k++)
{
a = Champ.f(tab[k],1) ;
b = Champ.f(tab[imin],1) ;
if(a.compareTo(b)<0)
{
imin = k ;
}
}
tampon = tab[imin] ;
tab[imin] = tab[i] ;
tab[i] = tampon ;
}
return tab ;
}
}
mais ça marche pas mieux
public class Trierplots
{
public static void main (String [] zz)
{
int i, t, r=0, k=0, n=0, l=0, h ;
String chaine = "" ;
String [] tabPlots, tabTotal, tabTrie ;
Fic g = new Fic() ;
g.open("Vols.txt","r") ;
while(chaine!=null)
{
chaine = g.read() ;
n = n+1 ;
}
g.close() ;
g.open("Vols.txt","r") ;
for(i=0;i<n-1;i++)
{
chaine = g.read() ;
tabPlots = GenererPlots.f(chaine) ;
l=tabPlots.length ;
k = k+l ;
}
g.close() ;
tabTotal = new String [k] ;
g.open("Vols.txt","r") ;
for(i=0;i<n-1;i++)
{
chaine = g.read() ;
tabPlots = GenererPlots.f(chaine) ;
h = tabPlots.length ;
for(t=0;t<h;t++)
{
tabTotal[t+r] = tabPlots[t] ;
}
r = r + tabPlots.length ;
}
g.close() ;
tabTotal = new String [k] ;
tabTrie = new String [k] ;
tabTrie = f(tabTotal) ;
for(i=0;i<tabTrie.length;i++)
{
X.println(tabTrie[i]) ;
}
System.exit(0) ;
}
public static String [] f(String [] tab)
{
int n = tab.length, i=0, k=0, imin=0 ;
String a=null, b=null, tampon=null ;
for(i=0;i<n-1;i++)
{ imin = i ;
for(k=i+1;k<n;k++)
{
a = Champ.f(tab[k],1) ;
b = Champ.f(tab[imin],1) ;
if(a.compareTo(b)<0)
{
imin = k ;
}
}
tampon = tab[imin] ;
tab[imin] = tab[i] ;
tab[i] = tampon ;
}
return tab ;
}
}
15 mars 2008 à 14:58
merci d'avoir répondu
j'ai donc vérifié les initialisations de mes variables, puis comme j'ai toujours l'erreur j'ai isolé le programme de tri et je l'ai testé. il marche
public class essaitri
{
public static void main (String [] zz)
{
int i ;
String [] tableau = new String [4] ;
tableau[0] = "merci et bonjour" ;
tableau[1] = "bonjour et merci" ;
tableau[2] = "salut à vous" ;
tableau[3] = "pourquoi pas ?" ;
String [] resultat = new String [4] ;
resultat = f(tableau) ;
for(i=0;i<4;i++)
{
X.println(resultat[i]) ;
}
}
public static String [] f(String [] tab)
{
int n = tab.length, i=0, k=0, imin=0 ;
String a=null, b=null, tampon=null ;
for(i=0;i<n-1;i++)
{ imin = i ;
for(k=i+1;k<n;k++)
{
a = Champ.f(tab[k],1) ;
b = Champ.f(tab[imin],1) ;
if(a.compareTo(b)<0)
{
imin = k ;
}
}
tampon = tab[imin] ;
tab[imin] = tab[i] ;
tab[i] = tampon ;
}
return tab ;
}
}
mais alors au final je ne comprends toujours pas ce qui cloche dans mon Trierplots