Я работаю над назначением, в котором я использую сканеры для чтения строк и токенов .txt-файла. Мне нужно сделать некоторые преобразования и переставить несколько строк, которые я сделал с помощью некоторых вспомогательных методов. Проблема в том, что код работает только для каждой другой строки, которую он читает из файла. Я думаю, что, возможно, я что-то испортил где-то в начале кода. Любые подсказки или подсказки о том, что мне нужно будет изменить? Вот что у меня есть thusfar:Программа, по-видимому, читает каждую строку .txt-файла
public static void main(String[] args) throws FileNotFoundException {
Scanner input = new Scanner(new File("PortlandWeather2013.txt"));
while (input.hasNextLine()) {
String header = input.nextLine();
System.out.println(header);
Scanner input2 = new Scanner(header);
while (input2.hasNextLine()){
String bottomHeader = input.nextLine();
System.out.println(bottomHeader);
String dataLines = input.nextLine();
Scanner linescan = new Scanner(dataLines);
while (linescan.hasNext()){
String station = linescan.next();
System.out.print(station+ " ");
String wrongdate = linescan.next();
String year = wrongdate.substring(0,4) ;
String day = wrongdate.substring(6);
String month = wrongdate.substring(4,6);
System.out.print(month + "/" + day + "/" + year);
double prcp = linescan.nextDouble();
System.out.print("\t "+prcpConvert(prcp));
double snwd = linescan.nextDouble();
System.out.print("\t " + snowConvert(snwd));
double snow = linescan.nextDouble();
System.out.print("\t" + snowConvert(snow));
double tmax = linescan.nextDouble();
System.out.print("\t" + tempConvert(tmax));
double tmin = linescan.nextDouble();
System.out.println("\t" + tempConvert(tmin));
}
}
}
}
public static double prcpConvert(double x){
double MM = x/1000;
double In = MM * 0.039370;
double rounded = Math.round(In * 10)/10;
return rounded;
}
public static double snowConvert(double x){
double In = x * 0.039370;
double rounded = Math.round(In * 10)/10;
return rounded;
}
public static double tempConvert(double x){
double celsius = x/10;
double fahrenheit = (celsius *9/5)+32;
double rounded = Math.round(fahrenheit *10)/10;
return rounded;
}
Почему вы создаете новый объект Scanner для простых строк? – Andrew121007
Также, пожалуйста, разместите содержимое PortlandWeather2013 и то, что ваше приложение должно делать. Без этой информации мы не сможем помочь вам, кроме синтаксических ошибок. – Andrew121007