Zum Inhalt springen

Werte an Datei anhängen statt zu überschreiben


Empfohlene Beiträge

Geschrieben

Hallo,

ich versuche ein Programm zu schreiben was innerhalb einer äuseren Schleife sowohl Text auf dem Bildschrim als auch in eine Datei ausgibt. Leider wird aber die Datei jedesmal wenn sie wieder geöffnet wird überschieben so das ich nur die Aktuelle Zeile dort stehen hab.

Der Code:


public class Test_Array {

	public static void main(String[] args) {

		int sum=0;

		int anzahl;

		int j=1;

		int z;


		do

		{

			Out.print("Anzahl Zufallszahlen in " + j + "-ter Zeile: ");


			anzahl=In.readInt();

			if (anzahl==-1){break;}

			Out.open("test4.txt");

			Out.print(anzahl + " ");

			for (int i=0; i<anzahl; i++){

				z=(int) (Math.random() * 6) + 1;

				Out.print(z + " ");

				sum+=z;

			}

			Out.println();

			Out.close();


			Out.println("Kontrollsumme: " + sum);

			sum=0;

			j++;

		}while (anzahl!=-1);	

	}

}

Wäre sehr dankbar falls mir jemand helfen könnte :)

MfG

Thongall

Geschrieben

Überlege mal was Du dort programmiert hast. Mal in Worten (und alles was nicht zu dem Dateizugriff notwendig ist, einmal ignorieren):


do {

     datei "test4.txt" öffnen

     in Datei "anzahl + _ " schreiben

     für i = 0 bis anzahl -1 do {

           in Datei schreiben "z + _ "

     }

     in Datei Leerzeile schreiben

     Datei schließen

} so lange anzahl != -1;

Überlege Dir einmal, was passiert wenn die do-while-Schleife zwei mal durchlaufen wird.

Geschrieben

Er öffnet die Datei beim zweiten durchgang wieder und überschreibt alles was drinn steht.

Nur weiß ich nicht wie ich das umgehen kann damit er in die zweite Zeile schreibt.

<- Anfänger :)

Geschrieben

Nur weiß ich nicht wie ich das umgehen kann damit er in die zweite Zeile schreibt.

<- Anfänger :)

Gerade weil Du Anfänger bist, sollst Du etwas lernen, d.h. was musst Du machen, damit er eben richtig arbeitet. Das ganze einmal in Worten beschreiben reicht aus, das ganze in Code formulieren, ist dann der zweite Schritt

Geschrieben (bearbeitet)


datei "test4.txt" öffnen

do {

     in Datei "anzahl + _ " schreiben

     für i = 0 bis anzahl -1 do {

           in Datei schreiben "z + _ "

     }

     in Datei Leerzeile schreiben

} so lange anzahl != -1;

Datei schließen

Allerding habe ich dann das Problem das die Werte auf dem Bildschirm auch in die Datei geschrieben werden.

Bearbeitet von flashpixx
Geschrieben

wenn in die Datei etwas anderes ausgegeben werden soll, als auf dem Bildschirm, dann musst du die Ausgabe auch trennen

du musst also sagen, was genau in der Datei ausgegeben werden soll und was auf dem Bildschirm ausgegeben werden soll

bzw. in deinem Fall, wo bestimmte Teile der Ausgabe sowohl in die Datei, als auch auf den Bildschirm gehen sollen, kannst du für die Ausgabe in die Datei das verwenden, was du bisher hast und für die Ausgabe ausschließlich auf den Bildschirm etwas anderes

(wie flashpixx bereits geschrieben hat: der Typ von Out ist nicht erkennbar - deshalb wird dir für die Ausgabe wohl keiner ohne Spekulationen genauer sagen können, was du machen könntest)

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...