sikove
Messages postés90Date d'inscriptionlundi 17 mars 2008StatutMembreDernière intervention31 mars 2010
-
17 avril 2008 à 20:46
Utilisateur anonyme -
17 avril 2013 à 20:42
salut,
j'ai un probleme bizarre lors d'execution d'un code :
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
at projettest.main(projettest.java:31)
d'ou ça peut venir svp ?
voila tout mon code java :
////////////////////////////////////////////// capitale ///////////////////////////////////////////////////////////
class capitale extends Ville {
private String president;
public capitale(){
super();
president="amine";
}
public capitale(String nom, int hab, String pays, String president2)
{
super(nom, hab, pays);
this.president = president2;
}
public String getPresident() {
return president;
}
public void setPresident(String president) {
this.president = president;
}
Ville v = new Ville();
Ville v1 = new Ville("marseille", 1236, "france");
Ville v2 = new Ville("rio", 321654, "brésil");
capitale c=new capitale("test",505,"Maroc","moi");
/* Les 3 premiers éléments du tableau seront des Villes,
et le reste, des capitales
*/
for(int i = 0; i < 6; i++){
if (i <3){
Ville k = new Ville(tab[i], tab2[i], "france" );
tableau[i] = k;
}
else{
capitale p = new capitale(tab[i], tab2[i], "france", "Sarko");
tableau[i] = p;
}
}
//il ne nous reste plus qu'à décrire tout notre tableau !
for(Ville a : tableau){
System.out.println(a.toString());
}
}
}
/////////////////////////////////////////// Ville.java ////////////////////////////////////////
public class Ville {
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201338 17 avril 2008 à 21:09
Salut:
Ici, tu as deux tableaux de longueur 4 et tu as une boucle de 6 itérations, ce qui a déclenché l'exception IndexOutOfBoundsException.
Correction: Il faut ajouter deux éléments à chaque tableau (pour avoir au moins 6 éléments).
// Méthode utiliser pour la sérialisation du fichier
public void encodeToFile(Object object, String xmlDocument)throws FileNotFoundException,IOException
{
//ouverture de l'encodeur vers le fichier
XMLEncoder encoder = new XMLEncoder(new FileOutputStream(xmlDocument));
try{
//serialisasion de l'objet
encoder.writeObject(object);
encoder.flush();
}finally{
//fermeture de l'encodeur
encoder.close();
}
}
public static void main(String[] args)
{
System.out.println("Debut de programme");
try
{
serialisationCreation fichier = new serialisationCreation();
fichier.encodeToFile(fichier, "fichierXML");
System.out.println("FICHIER créé");
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201338 30 janv. 2009 à 09:27
Salut:
Est ce que tu peux envoyer tout le code, y compris le code de la classe "SerialisationCreation".
Vous n’avez pas trouvé la réponse que vous recherchez ?
daju49
Messages postés208Date d'inscriptionmercredi 28 novembre 2007StatutMembreDernière intervention 5 juin 2014 3 févr. 2009 à 09:58
salut,
dsl mais j'ai mal exposé mon problème.
voila enfaite je fais un programme en java qui doit créé un fichier rdf/xml avec le framwork XMLlight
ensuite je dois convertir mon .class en .tini et c'est ici que sa bloque! ( je dois le mettre sur une carte embarquée Tini)
dsl du dérangement.
youba1920
Messages postés1Date d'inscriptionsamedi 9 avril 2011StatutMembreDernière intervention 9 avril 2011 9 avril 2011 à 12:00
donner la taille
2
donner les elements du tableau
1
donner les elements du tableau
2
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
at tableau.main(tableau.java:18)
Je veux savoir pouquoi j'ai cette erreur!!
Mon code est:
////tableau.java///
import java.util.Scanner;
public class tableau {
public static void main(String[] args)throws Exception {
Scanner sc =new Scanner(System.in);
System.out.println("donner la taille");
int taille = sc.nextInt();
int[] tableau=new int[taille];
for (int i=1;i<=tableau.length;i++)
{
System.out.println("donner les elements du tableau");
tableau[i]=sc.nextInt();
}
int min=tableau[0];
for (int i=1;i<=tableau.length;i++)
{
if (tableau[i]<min)
{
min=tableau[i];
i++;
}
System.out.println("le minimum est " + min);
}
}
}
Le problème vient de ta boucle for (la première je pense). Je t'explique :
Un tableau commence -toujours- à partir de l'indice 0. Donc si tu fais un tableau tab[] de taille 2, tu auras accès à tab[0] et tab[1] mais pas tab[2] ! Pour faire simple, si tu fais un tableau de taille n, l’indice maximal serait n - 1.
Dans ta boucle tu utilises tableau.length (donc égal à 2).
Problème, dans cette boucle tu pars pour i 1. Donc au premier tour tu auras i 1 et au deuxième i = 2.
Comme je l'ai dit plus haut, si ton tableau est de taille 2, l'indice maximal est 1. Là veux lui mettre une valeur à un indice qu'il n'a pas. D'où l'exception.
cs_tatoufa
Messages postés52Date d'inscriptionvendredi 30 octobre 2009StatutMembreDernière intervention 6 août 20121 3 avril 2012 à 16:21
Bonjour,
j'ai comme mes collègue un probleme du code lors de l'execution il s'affiche ça:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
at jxl.read.biff.SheetImpl.getCell(SheetImpl.java:318)
at jxl.read.biff.SheetImpl.getCell(SheetImpl.java:298)
at TestLecture.main(TestLecture.java:36)
public static void main(String[] args) {
Workbook workbook = null;
try {
/* Récupération du classeur Excel (en lecture) */
workbook = Workbook.getWorkbook(new File("exemple5.xls"));
/* Un fichier excel est composé de plusieurs feuilles, on y accède de la manière suivante*/
Sheet sheet = workbook.getSheet(0);
Sheet sheet1 = workbook.getSheet(0);
/* On accède aux cellules avec la méthode getCell(indiceColonne, indiceLigne) */
Cell a1 = sheet.getCell(0,0);
/* On peut également le faire avec getCell(nomCellule) */
Cell c5 = sheet.getCell("C5");
/* On peut récupérer le contenu d'une cellule en utilisant la méthode getContents() */
String contenuA1= a1.getContents();
String contenuC5 = c5.getContents();
System.out.println(contenuA1);
System.out.println(contenuC5);
}
catch (BiffException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
finally {
if(workbook!=null){
/* On ferme le worbook pour libérer la mémoire */
workbook.close();
}
}
}
cs_tatoufa
Messages postés52Date d'inscriptionvendredi 30 octobre 2009StatutMembreDernière intervention 6 août 20121 3 avril 2012 à 16:43
désole j'ai oublier d'expliquée : je suis entrain de lire des données de différent onglets d'un fichier excel avec java et faire l'extraction de ces données dans un autre
Peux-tu nous dire quelle est la ligne 36 ici ? Affiche-nous le code des objets utilisés.
Et pense à utiliser les balises pour 'affichage propre du code !
--
Pylouq (Lire le Réglement n'a jamais tué personne, au pire ça a instruit des gens.)
/**
* Constructeur qui récupère l'identifiant du port et lance l'ouverture.
*/
public ModeEvenement(String port) {
//initialisation du driver
Win32Driver w32Driver = new Win32Driver();
w32Driver.initialize();
//récupération de l'identifiant du port
try {
portId = CommPortIdentifier.getPortIdentifier(port);
} catch (NoSuchPortException e) {
}
//ouverture du port
try {
serialPort = (SerialPort) portId.open("ModeEvenement", 2000);
} catch (PortInUseException e) {
}
//récupération du flux
try {
fluxLecture =
new BufferedReader(
new InputStreamReader(serialPort.getInputStream()));
} catch (IOException e) {
}
//ajout du listener
try {
serialPort.addEventListener(this);
} catch (TooManyListenersException e) {
}
//paramétrage du port
serialPort.notifyOnDataAvailable(true);
try {
serialPort.setSerialPortParams(
9600,
SerialPort.DATABITS_7,
SerialPort.STOPBITS_1,
SerialPort.PARITY_EVEN);
} catch (UnsupportedCommOperationException e) {
}
System.out.println("port ouvert, attente de lecture");
}
public void run() {
running = true;
while (running) {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
}
}
//fermeture du flux et port
try {
fluxLecture.close();
} catch (IOException e) {
}
serialPort.close();
}
/**
* Méthode de gestion des événements.
*/
public void serialEvent(SerialPortEvent event) {
//gestion des événements sur le port :
//on ne fait rien sauf quand les données sont disponibles
switch (event.getEventType()) {
case SerialPortEvent.BI :
case SerialPortEvent.OE :
case SerialPortEvent.FE :
case SerialPortEvent.PE :
case SerialPortEvent.CD :
case SerialPortEvent.CTS :
case SerialPortEvent.DSR :
case SerialPortEvent.RI :
case SerialPortEvent.OUTPUT_BUFFER_EMPTY :
break;
case SerialPortEvent.DATA_AVAILABLE :
String codeBarre = new String();
try {
//lecture du buffer et affichage
codeBarre = (String) fluxLecture.readLine();
System.out.println(codeBarre);
} catch (IOException e) {
}
break;
}
}
/**
* Permet l'arrêt du thread
*/
public void stopThread() {
running = false;
}
/**
* Méthode principale de l'exemple.
*/
public static void main(String[] args) {
//Récuperation du port en argument
String port = args[0];
//lancement de l'appli
ModeEvenement modeEve=new ModeEvenement(port);
modeEve.start();
//"interface utilisateur"
System.out.println("taper q pour quitter");
//construction flux lecture
BufferedReader clavier =
new BufferedReader(new InputStreamReader(System.in));
//lecture sur le flux entrée.
try {
String lu = clavier.readLine();
while (!lu.equals("q")) {
}
} catch (IOException e) {
}
modeEve.stopThread();