Exception
Résolu
black light
Messages postés
29
Date d'inscription
Statut
Membre
Dernière intervention
-
black light Messages postés 29 Date d'inscription Statut Membre Dernière intervention -
black light Messages postés 29 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
voici a l'exécution de mon code j'ai le message suivant:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 46
at Prog.main(Prog.java:18)
j'arrive pas a trouver ou est l'erreur quelqu'un pourrais peut être m'aider.
merci d'avance.
et voici mon code :
voici a l'exécution de mon code j'ai le message suivant:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 46
at Prog.main(Prog.java:18)
j'arrive pas a trouver ou est l'erreur quelqu'un pourrais peut être m'aider.
merci d'avance.
et voici mon code :
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.*;
import java.net.URL;
public class Zellal
{
public static void main(String[] args) throws IOException
{
//URL url = new URL("https://www.vidal.fr/medicaments/substances/liste-c.html");// Ou bien...
String urlstart="https://www.vidal.fr/medicaments/substances/liste-c.html";
char taburl[],c=' '; int i,j=0;
char tabchar[]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
taburl=urlstart.toCharArray();//transformer la chaine en tableau
int taille= taburl.length; //retrouver la taille du tableau
for (i=taille;i!=0 && taburl[i]!='.';i--);// boucle vide
if (i==0) System.out.println("erreur dans le lien");
else c=taburl[i-1]; //on recupere le caractere qui est avant le point
//spécifier l'URL (plus tard), elle sera insérée dans une boîte de saisie de type InputDialog
PrintWriter ecrire = new PrintWriter("subst");
PrintWriter ecrire1 = new PrintWriter("compr");
ecrire.write("\uFEFF");
//PrintWriter ecrire =new PrintWriter (new FileWriter ("subst.dic")) ;//FileWriter n'accepte pas un 2ème argument pour spécifier l'encodage
URL url = new URL(urlstart);
//instancier un objet de la classe URL
System.out.println("URL à aspirer ==>"+url);
//imprimer cet objet
while(j<25)
{ if (taburl[i-1]!=tabchar[j])
{taburl[i-1]=tabchar[j];//on fait varier la lettre avant le point
urlstart=new String(taburl);
url = new URL(urlstart);
BufferedReader lire = new BufferedReader(new InputStreamReader(url.openStream()));
do
//faire ce qui suit
{
String line = lire.readLine();
System.out.println(line);
if(line == null)
{
break;
}
ecrire.write(line);
ecrire.write(System.getProperty("line.separator"));
//générer dans sauts de ligne
} while(true); j++;}
else continue;//si taburl[i-1]==tabchar[j]
}
//tant que c'est vrai (true)
ecrire.close();
//fermer le flux d'écriture
}
}
A voir également:
- Exception
- Appliquez à tous les paragraphes du document à télécharger, à l’exception des titres et des sous-titres, la mise en forme suivante : - Guide
- A java exception has occurred - Forum Minecraft
- Une exception non gérée s'est produite dans votre application - Forum Word
- Erreur d'application : une exception côté client s'est produite (consultez la console du navigateur pour plus d'informations). - Forum Google Chrome
- Erreur d'application - Windows 11
2 réponses
Bonjour,
Ton erreur est là :
Donc quand tu fais
Il faudrait plutôt faire
Remarque : j'ai mis
Ton erreur est là :
int taille= taburl.length; //retrouver la taille du tableau for (i=taille;i!=0 && taburl[i]!='.';i--);// boucle vide
iest initialisé avec
taillequi vaut
taburl.length(46 dans ton cas), or les indices d'un tableau commencent à 0, donc le dernier indice est
taburl.length-1.
Donc quand tu fais
taburl[i]ça plante parce que i est trop grand... d'où l'exception.
Il faudrait plutôt faire
for (i=taille-1; i>=0 && taburl[i]!='.'; i--);
Remarque : j'ai mis
i>=0pour la même raison : les indices commencent à 0...