Ich arbeite an einer Java-Aufgabe für die Schule. Die Aufgabe besteht darin, mit zwei Dateien zu arbeiten, die die erste lesen, mit der zweiten, um Anpassungen an der ersten vorzunehmen und schließlich in einer neuen Datei auszugeben.Problem mit Schleife nicht das Ende einer Datei zu erreichen - Java
Scanner inputRecords = new Scanner(new File("Records.txt"));
Scanner inputTransactions = new Scanner(new File("Transactions.txt"));
BufferedWriter outputFile = (new BufferedWriter(new FileWriter("NewRecords.txt", true)));
char code; // transaction code
String lineTran = "";
String lineRecord = "";
String midS = "";
String tidS = "";
int tid = 0, mid= 0;
for (int x = 0; x < 6; x++)
{
lineTran = inputTransactions.nextLine();
code = lineTran.charAt(0);
System.out.println(code);
tidS = lineTran.substring(2,11);
tid = Integer.parseInt(tidS);
lineRecord = inputRecords.nextLine();
midS = lineRecord.substring(0,9);
mid = Integer.parseInt(midS);
if (mid < tid) // add a new record lineTran.substring(2,lineTran.length()
{
outputFile.write(lineRecord);
outputFile.newLine();
lineRecord = inputRecords.nextLine();
}
else if (mid == tid)
{
if (code == 'C') //change record
{
outputFile.write(lineTran.substring(2,lineTran.length()));
outputFile.newLine();
lineTran = inputTransactions.nextLine();
}
else if (code == 'D') //delete record
{
lineTran = inputTransactions.nextLine();
lineRecord = inputRecords.nextLine();
}
else // add error
{
System.out.println(lineRecord + " Already Exists...add error");
lineTran = inputTransactions.nextLine();
}
}
else
{
if (code == 'A') // add record
{
outputFile.write(lineTran.substring(2,lineTran.length()));
outputFile.newLine();
lineTran = inputTransactions.nextLine();
}
else if (code == 'C') // change error
{
System.out.println(lineRecord + " Record already exist...Change Error");
lineTran = inputTransactions.nextLine();
}
else // delete error
{
System.out.println(lineRecord + " Record does not exist...delete error");
lineTran = inputTransactions.nextLine();
}
}
beachten: Records.txt 10 Zeilen von Information hat (Beispiel: ######### Nachname Vorname Beruf) Transactions.txt 6 Zeilen Informationen (Beispiel: ‚A, D oder C '######### Nachname Vorname Beruf)
Das Problem, das ich habe, ist egal, die Art der Schleife, die ich laufen, ich erreiche eine von 2 Deadends. 1) im Fall der for-Schleife oben
D A C A C 386.326.383 dünner Kan Personal keine Änderungen gefunden ... ändern Fehler
Exception in thread "main" java. lang.StringIndexOutOfBoundsException: String-Index außerhalb des Bereichs: 0 bei java.lang.String.charAt (unbekannte Quelle) bei fileHandling.main (fileHandling.java:26) ist das Ergebnis und nichts in die Datei geschrieben.
2) Wenn ich für Schleife durch x < laufen 5 Programm läuft gut und überspringt jedoch die letzte Transaktion.
Ich versuchte "Do While" und "While" Schleifen, aber nur ähnliche Ergebnisse. irgendwelche Vorschläge?
Was ist unklar über * "StringIndexOutOfBoundsException: String Index außerhalb des Bereichs: 0" *? Sie haben leere Zeilen in Ihrer Datei und Ihr Code kann das nicht verarbeiten. – Tom
nein, ich habe sichergestellt, dass die Datei sauber und richtig eingerichtet ist und ich bin mir sicher, dass es eine zusätzliche Zeile gibt, die die Schleife in beiden Fällen nicht erreicht. – Mark