Problème d'assignation d'objet dans un tableau
Résolu
OmeGaFire_
Messages postés
83
Date d'inscription
Statut
Membre
Dernière intervention
-
OmeGaFire_ Messages postés 83 Date d'inscription Statut Membre Dernière intervention -
OmeGaFire_ Messages postés 83 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai écrit un code qui, à chaque instance d'un objet spécifié, fait une copie de cet objet dans un tableau. Seulement, cette partie de code fait planter mon code pour une ArrayOutOfBoundsException.
Code:
La classe principale, où les tableaux sont créés:
L'erreur:
Merci de m'aider c:
Bonne journée.
J'ai écrit un code qui, à chaque instance d'un objet spécifié, fait une copie de cet objet dans un tableau. Seulement, cette partie de code fait planter mon code pour une ArrayOutOfBoundsException.
Code:
package fr.killuaah.cmd.cmdmanager;
public class Command {
int argsNumber;
String prefix;
public Command(int argsNumbers, String prefixx) {
commandManager.commandsInstances++;
commandManager.commandrep[commandManager.commandsInstances-1] = this;
//Variables de l'objet
argsNumber = argsNumbers;
prefix = prefixx;
La classe principale, où les tableaux sont créés:
package fr.killuaah.cmd.cmdmanager;
import java.util.Scanner;
public class commandManager {
public static int commandsInstances = 0;
public static Command[] commandrep = {};
public static void main(String[] args) {
// TODO Auto-generated method stub
boolean b = true;
String[] command;
Command c = new Command(4,"salut");
while (b) {
System.out.print(">>");
Scanner sc = new Scanner(System.in);
command = sc.nextLine().split(" ");
System.out.println(commandManager.commandsInstances);
}
}
}
L'erreur:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at fr.killuaah.cmd.cmdmanager.Command.<init>(Command.java:16)
at fr.killuaah.cmd.cmdmanager.commandManager.main(commandManager.java:16)
Merci de m'aider c:
Bonne journée.
1 réponse
-
Bonjour,
ArrayIndexOutOfBoundsException: 0
signifie que tu essayes d'accéder à la case 0 qui n'existe pas, ce qui est normal puisque ton tableau est initialisé aveccommandrep = {}et qu'il est donc de taille 0...
Il faudrait que le tableau ait au moins une taille de 1 pour utiliser la case 0.-
-
-
-
Non, aucun objet n'a jamais de taille illimité car il faut toujours que le système d'exploitation (via la JVM) puisse réserver un espace mémoire contiguë permettant de stocker cet objet.
Mais si tu veux faire un espace de stockage "illimité" il faudrait plutôt que tu regardes comment fonctionnent les listes. Il y en a plusieurs implémentations mais par exemple les ArrayList ont une capacité qui se redimensionne automatiquement par copier-coller de ses éléments d'un tableau à un autre plus grand.
Exemple :
List<Command> commandRep = new ArrayList<Command>(); Command command = ... commandRep.add(command);
-
-