Sie haben beide eine String
und ein int
so, entweder immer fragen Sie nach einem String
(und analysieren es später zu einem int
), oder, wenn Sie die formatation der Datei kennen, können Sie es zu Ihren Gunsten nutzen konnten. In Ihrem Beispiel haben Sie eine int
, String
, int
, int
, String
, und dann einen Zeilenumbruch.
Von hier aus könnten Sie Dinge auf verschiedene Arten tun.
Eine Lösung die Verwendung eines Scanner
impliziert eine ganze Zeile zu lesen, und dann die String
‚s Methode .split(String regex)
, erstellen wir eine Reihe von Strings, die wir jetzt analysieren kann. Damit die Methode funktioniert korrekt, müssen Sie konsequent in der Art sein, wie Sie Ihren Text trennen. In meinem Beispiel habe ich Tab verwendet. Ich habe deine Beispiele verwendet und sie alle tabbed. Ich werde hier nicht angezeigt, da der Editor die Tabs nicht speichert.
File fileName = new File("hurcdata2.txt");
int arrayLength = 6; //I used 6 since you showed 6 lines
//You could use an ArrayList or an algorithm to dynamically
//increase the size of the arrays.
int [] year = new int[arrayLength];
String [] month = new String[arrayLength];
int [] pressure = new int[arrayLength];
int [] windSpeed = new int[arrayLength];
Scanner fileScanner = null;
try {
fileScanner = new Scanner(fileName);
}
catch (FileNotFoundException ex) {
//Exception handling;
}
int n = 0;
while(fileScanner.hasNext()) {
String toParse = fileScanner.nextLine();
String[] splitedString = toParse.split("\t");
year[n] = Integer.parseInt(splitedString[0]);
month[n] = splitedString[1];
pressure[n] = Integer.parseInt(splitedString[2]);
windSpeed[n] = Integer.parseInt(splitedString[3]);
n++;
}
fileScanner.close();
//I will include my test to check it.
for (int i = 0 ; i < arrayLength; i++) {
System.out.print("\ni: " + i);
System.out.print(" - year: " + year[i]);
System.out.print("; month: " + month[i]);
System.out.print("; pressure: " + pressure[i]);
System.out.println("; windSpeed: " + windSpeed[i]);
}
Eine andere Lösung ist es, eine StringReader
statt .split(String regex);
zu verwenden. StringReader
ist wie ein Scanner
, aber es ist in Strings spezialisiert.
Sie könnten auch eine FileReader
in einem BufferedReader
verpackt aus der Datei lesen.
FileReader myFileReader = null;
BufferedReader myBufferedReader = null;
try {
myFileReader = new FileReader(fileName);
myBufferedReader = new BufferedReader(myFileReader);
int n = 0;
String toParse = null;
while((toParse = myBufferedReader.readLine()) != null) {
//Is this confusing for you?^
String[] splitedString = toParse.split("\t");
year[n] = Integer.parseInt(splitedString[0]);
month[n] = splitedString[1];
pressure[n] = Integer.parseInt(splitedString[2]);
windSpeed[n] = Integer.parseInt(splitedString[3]);
n++;
}
}
catch (FileNotFoundException ex) {
//Exception handling;
}
catch (IOException ex) {
//Exception handling;
}
finally {
try {
myFileReader.close();
}
catch (IOException ex) {
//Exception handling;
}
try {
myBufferedReader.close();
}
catch (IOException ex) {
//Exception handling;
}
}
Ich hoffe, ich habe geholfen.
Einen schönen Tag noch. :)
Auf welche Codezeile bezieht sich der Fehler? –