Il semble que Java ne reconnaisse pas mon tableau (Split) lorsque j'essaie d'utiliser la propriété "LeDength "et je ne sais pas pourquoi. Les deux déclarations sont dans la méthode principale, il n'ya donc aucune raison de ne pas fonctionner. Lorsque je souris sur les erreurs d'Eclipse, il dit que l'objet "Split" est indéfini et me demande de le créer malgré le fait qu'il est déjà initialisé.
Voici mon code, les erreurs sont aux lignes 41 et 42 < / p>
Erreurs: p> Code complet: p>
3 Réponses :
Vous avez défini le tableau à l'intérieur tandis que la boucle: définissez comme suit: p>
String[] split; i = 0; while (i < times.length) { split = times[i].split(" ", 2); i++; }//end of while i = 0; List<Runner> allRunners = new ArrayList<Runner>(); while (i < split.length) { allRunners.add(new Runner(Double.parseDouble(split[i]), split[i + 1])); } There are two error's in this code, split you need declare outside of while loop in while loop for new Runner you need pass two params (double, String), but given two string params. Please check above updated code snippet :)
Vous avez défini chaîne [] SPLIT code> à l'intérieur d'un
pendant code> boucle. Vous ne pouvez donc pas accéder au tableau code> Split code> en dehors de cette boucle. Ainsi, changez ci-dessous Partie du code:
public static void main(String[] args) throws IOException {
Scanner inFile = new Scanner(new File("input.txt"));
int x = inFile.nextInt();
int i = 0;
String[] times = new String[x];
while (i < times.length) {
times[i] = inFile.nextLine();
i++;
}//end of while
i = 0;
List<Runner> allRunners = new ArrayList<Runner>();
while (i < times.length) {
String[] split = times[i].split(" ", 2);
int j = 0;
while (j < split.length - 1) {
allRunners.add(new Runner(Double.valueOf(split[j]), split[j + 1]));
j++;
}
i++;
}//end of while
//Fastest Over All Time
Runner fastestRunner = getMaxTime(allRunners);
System.out.println("FASTEST TIME");
System.out.println(
"Time: " + fastestRunner.getTime() + "\n" +
"Gender: " + fastestRunner.getGender() +
"\n"
);
//Fastest Female Time
Runner fastestFemaleRunner = getMaxTimeFemale(allRunners);
System.out.println("FASTEST FEMALE TIME");
if (fastestRunner.getGender().equalsIgnoreCase("F")) {
System.out.println(
"Time: " + fastestFemaleRunner.getTime() + "\n" +
"Gender: " + fastestFemaleRunner.getGender() +
"\n"
);
} else {
System.out.println(
"Time: " + fastestFemaleRunner.getTime() + "\n" +
"Gender: " + fastestFemaleRunner.getGender() +
"\n"
);
}
//Fastest Male Time
Runner fastestMaleRunner = getMaxTimeMale(allRunners);
if (fastestRunner.getGender().equalsIgnoreCase("M")) {
System.out.println(
"Time: " + fastestMaleRunner.getTime() + "\n" +
"Gender: " + fastestMaleRunner.getGender() +
"\n"
);
} else {
System.out.println("FASTEST MALE TIME");
System.out.println(
"Time: " + fastestMaleRunner.getTime() + "\n" +
"Gender: " + fastestMaleRunner.getGender() +
"\n"
);
}
}//end of main
Vous ne pouvez pas utiliser une variable en dehors de la portée dans laquelle il est défini. Vous déclarez diviser à l'intérieur d'une boucle, donc ce n'est pas visible en dehors de cette boucle.
Et puis votre prochain problème sera que votre appel constructeur ne correspond pas à la signature de votre constructeur.
Je ne peux pas trouver d'autre moyen d'initialiser ce tableau, que puis-je faire?
Initialisez-le dans une portée plus large.