K
KlemensyXYZ
Gast
Moin,
mein letztes Problem lag ja hier:
http://www.java-forum.org/java-basi...txt-dateien-programm-einlesen.html#post728345
Es geht immer noch um das gleiche Programm.
Ich soll die Durchschnittsnoten in eine .txt Datei speichern.
Das funktioniert auch nur bekomme ich da keine Leerzeilen bzw. Absätze rein.
Die ausgabe Sieht so aus:
Hier ist der Quelltext; vllt findet ihr meinen Fehler (Zeile 58 und 191):
Danke
mein letztes Problem lag ja hier:
http://www.java-forum.org/java-basi...txt-dateien-programm-einlesen.html#post728345
Es geht immer noch um das gleiche Programm.
Ich soll die Durchschnittsnoten in eine .txt Datei speichern.
Das funktioniert auch nur bekomme ich da keine Leerzeilen bzw. Absätze rein.
Die ausgabe Sieht so aus:
Code:
Der 1. Schueler hat einen Durchschnitt von: 2,5 Der 1. Schueler hat einen Durchschnitt von: 2,5 usw
Hier ist der Quelltext; vllt findet ihr meinen Fehler (Zeile 58 und 191):
Java:
package noten_schreiben;
import java.io.*;
import java.util.*;
public class Noten_txt_schreiben
{
/**
* @param args
* Autor: * Datum: 08.02.2011
*
* Aufgabe: 1. Einlesen von Noten aus der Datei Noten.txt
* 2. Einspielen der Noten in das Programm noten
*/
static int schuelerAnzahl; //Klassenvariablen, können in der ganzen
static int anzahlNoten; //Klasse gelesen werden
static double note;
static String line;
public static void main(String[] args) throws IOException
{
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in); //Scanner wird benötigt für Tastatureingaben
double gesamtFeld[][];
double notenFeld[];
double summe;
double durchschnitt;
int fehler;
String ende;
String scannervariable;
String fileNameLesen;
String fileNameSchreiben;
do
{
System.out.println();
System.out.println("Programmstart noten");
System.out.println();
System.out.println("Geben Sie den Namen der Datei ein, ");
System.out.println("in der die Noten abgespeichert sind.");
System.out.println("Beispiel: Noten.txt");
fileNameLesen = input.nextLine(); //Einlesen des Dateinamen
BufferedReader stdin = new BufferedReader(new FileReader( fileNameLesen ) ); //BufferedReader zum einlesen von txt Dateien
System.out.println();
System.out.println("Geben Sie den Namen der Datei ein, ");
System.out.println("in der die Noten abgespeichert werden sollen.");
System.out.println("Beispiel: Notendurchschnitt.txt");
fileNameSchreiben = input.nextLine();
FileWriter writer = new FileWriter( fileNameSchreiben );
writer.write("Notendurchschnitte errechnet aus der Datei " + fileNameLesen +"\n");
fehler = 0;
while (fehler == 0) //try & catch zum widerholen der Eingaben bei
{ //Fehlerhafter Eingabe
fehler = 1;
System.out.println();
System.out.println("Wieviele Schueler? ");
scannervariable = input.nextLine();
try
{
schuelerAnzahl = Integer.parseInt(scannervariable);
}
catch (StringIndexOutOfBoundsException e)
{
System.out.println("! FEHLER_1 !");
System.out.println(e.toString());
fehler = 0;
}
catch (NumberFormatException e)
{
System.out.println("! FEHLER_2 !");
System.out.println(e.toString());
fehler = 0;
}
}
gesamtFeld = new double[schuelerAnzahl][];
for (int i = 0; i < gesamtFeld.length; i++)
{
fehler = 0;
while (fehler == 0) //2. try & catch Block
{
fehler = 1;
System.out.println();
System.out.println("Wie viele Noten hat der " + (i + 1) + ". Schueler?");
scannervariable = input.nextLine();
{
try
{
anzahlNoten = Integer.parseInt(scannervariable);
}
catch (StringIndexOutOfBoundsException e)
{
System.out.println("! FEHLER_1 !");
System.out.println(e.toString());
fehler = 0;
}
catch (NumberFormatException e)
{
System.out.println("! FEHLER_2 !");
System.out.println(e.toString());
fehler = 0;
}
}
}
notenFeld = new double[anzahlNoten];
System.out.println();
System.out.println("Lese Noten ein ...");
System.out.println();
for (int j = 0; j < anzahlNoten; j++)
{
fehler = 0;
while (fehler ==0)
{
fehler =1;
line = stdin.readLine();
if (! line.equals("")) //führt try&catch durch, falls eine Leerzeile
{ //gelesen werden soll. Dadurch wird das Programm
try //trotzdem fortgeführt, ansonsten kommt eine Fehlermeldung
{
note = Double.parseDouble(line);
}
catch (StringIndexOutOfBoundsException e)
{
System.out.println("! FEHLER_1 !");
System.out.println(e.toString());
fehler = 0;
}
catch (NumberFormatException e)
{
System.out.println("! FEHLER_2 !");
System.out.println(e.toString());
fehler = 0;
}
}
else
{
fehler = 0;
}
}
System.out.println(note);
System.out.println();
notenFeld[j] = note;
}
gesamtFeld[i] = notenFeld;
}
for (int i = 0; i < gesamtFeld.length; i++)
{
summe = 0;
for (int j = 0 ; j < gesamtFeld[i].length ; j++)
{
summe = summe + gesamtFeld[i][j];
}
durchschnitt = summe / gesamtFeld[i].length;
writer.write("Der Durchschnitt von Schueler: " + (i +1)+ " ist " + durchschnitt + "\n");
System.out.println();
System.out.println("Der " + (i + 1) + ". Schueler hat einen Durchschnitt von: " + durchschnitt);
}
writer.close();
System.out.println();
System.out.println("Wollen Sie beenden?");
System.out.println("Geben sie 'ja' oder 'nein' ein.");
ende = input.nextLine();
}
while(ende.equals("nein"));
System.out.println();
System.out.println("Programmende noten");
System.out.println();
}
}
Danke
Zuletzt bearbeitet von einem Moderator: