[Minecraft] Problème avec les tableaux
Résolu
Helh
-
Helh -
Helh -
Bonjour,
Je débute en Java, et j'aimerai avoir quelque éclaircissements sur les tableaux car je suis complètement bloqué. Voici mon code en question :
Je dois au final obtenir 3 variables qui sont des tableaux de double, sachant que je ne peux pas prévoir à l'avance quel devra être la taille du tableau ni ce qu'il contiendra (à part que ce seront des doubles).
J'ai un peu de mal avec la déclaration et la gestion des tablraux.
Lors de la compilation, à peu près toutes les lignes concernées par un tableau génèrent une erreur (error: not a statement, error: ';' expected ou error: ']' expected).
Je vous remercie par avance.
Je débute en Java, et j'aimerai avoir quelque éclaircissements sur les tableaux car je suis complètement bloqué. Voici mon code en question :
double cornersX[];
double cornersY[];
double cornersZ[];
if (type == "area") {
if (keys.contains("corners")) {
CArray givenCorners = Static.getArray(optionArray.get("corners", t), t);
if (givenCorners.inAssociativeMode()) {
throw new ConfigRuntimeException("The corners array must not be associative.", ExceptionType.CastException, t);
}
MCLocation cornerLocation;
cornersX[] = new double[givenCorners.size()];
cornersZ[] = new double[givenCorners.size()];
for (String index : givenCorners.keySet()) {
cornerLocation = ObjectGenerator.GetGenerator().location(givenCorners.get(index, t), mcworld, t);
cornersX[Integer.parseInt(index)] = cornerLocation.getX();
cornersZ[Integer.parseInt(index)] = cornerLocation.getZ();
}
} else {
cornersX[] = {spawnLocation.getX()};
cornersZ[] = {spawnLocation.getZ()};
}
cornersY[] = null;
} else if (type == "polyline") {
if (keys.contains("corners")) {
CArray givenCorners = Static.getArray(optionArray.get("corners", t), t);
if (givenCorners.inAssociativeMode()) {
throw new ConfigRuntimeException("The corners array must not be associative.", ExceptionType.CastException, t);
}
MCLocation cornerLocation;
cornersX[] = new double[givenCorners.size()];
cornersY[] = new double[givenCorners.size()];
cornersZ[] = new double[givenCorners.size()];
for (String index : givenCorners.keySet()) {
cornerLocation = ObjectGenerator.GetGenerator().location(givenCorners.get(index, t), mcworld, t);
cornersX[Integer.parseInt(index)] = cornerLocation.getX();
cornersZ[Integer.parseInt(index)] = cornerLocation.getY();
cornersZ[Integer.parseInt(index)] = cornerLocation.getZ();
}
} else {
cornersX[] = {spawnLocation.getX()};
cornersY[] = {spawnLocation.getY()};
cornersZ[] = {spawnLocation.getZ()};
}
} else {
cornersX[] = null;
cornersY[] = null;
cornersZ[] = null;
}
Je dois au final obtenir 3 variables qui sont des tableaux de double, sachant que je ne peux pas prévoir à l'avance quel devra être la taille du tableau ni ce qu'il contiendra (à part que ce seront des doubles).
J'ai un peu de mal avec la déclaration et la gestion des tablraux.
Lors de la compilation, à peu près toutes les lignes concernées par un tableau génèrent une erreur (error: not a statement, error: ';' expected ou error: ']' expected).
Je vous remercie par avance.
2 réponses
-
Les crochets spécifient le tableau sur son type, pas sur les variables.
Il faut donc écriredouble[] cornersX;
à la place dedouble cornersX[];
puis utilisercornersX
sans les crochets. Idem pourcornersY
etcornersZ
.
Tu n'utiliseras les crochets sur les variables que pour référencer une case du tableau, en précisant alors l'indice de celui-ci.cornersX[0]; cornersX[1]; ...
Remarque : il ne faut jamais comparer deux objets avec l'opérateur == qui compare la référence de l'objet, mais pas leurs valeurs. Utilises plutôt la méthode equals, par exemple en remplaçantif (type == "area")
parif (type.equals("area")).
La confiance n'exclut pas le contrôle -