Похоже, что java не распознает мой массив (split), когда я пытаюсь использовать свойство ".length", и я понятия не имею, почему. оба утверждения находятся в основном методе, поэтому нет никаких причин, чтобы он не работал. когда я нахожу курсор мыши на ошибки в eclipse, он говорит, что объект split не определен, и просит меня создать его, несмотря на тот факт, что он уже инициализирован.
Вот мой код, ошибки находятся в строках 41 и 42
ошибки:
List<Runner> allRunners = new ArrayList<Runner>();
while(i<split.length) {
allRunners.add(new Runner(split[i], split[i+1]));
}
полный код:
import java.util.ArrayList;
import java.io.File;
import java.util.Scanner;
import java.io.IOException;
import java.util.Comparator;
import java.util.List;
public class RaceClient {
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;
while(i<times.length) {
String[]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(split[i], split[i+1]));
}
//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
static class Runner{
public double time;
public String gender;
public Runner(double time, String gender){
this.time=time;
this.gender=gender;
}
public Double getTime() {
return this.time;
}
public String getGender(){
return this.gender;
}
}
public static Runner getMaxTime(List<Runner> allRunners){
Runner max_runner=allRunners.stream()
.min(Comparator.comparingDouble(Runner::getTime))
.get();
return max_runner;
}
public static Runner getMaxTimeFemale(List<Runner> allRunners){
Runner maxFemaleRunner=allRunners.stream()
.filter(runner->runner.getGender().equalsIgnoreCase("F"))
.min(Comparator.comparingDouble(Runner::getTime))
.get();
return maxFemaleRunner;
}
public static Runner getMaxTimeMale(List<Runner> allRunners){
Runner maxMaleRunner=allRunners.stream()
.filter(runner->runner.getGender().equalsIgnoreCase("M="))
.min(Comparator.comparingDouble(Runner::getTime))
.get();
return maxMaleRunner;
}
}//end of class