Ewiges, dummes "end"

Status
Nicht offen für weitere Antworten.

Onkel markus

Bekanntes Mitglied
Bin grad am verzweifeln:
Jedes mal wenn ich ein textdukoment einlese bricht der reader erst NACH null ab... ergebniss: In meiner textarea usw steht am ende null....
Hab sogar schon doppelte sicherheit reingesetz bringt aber nüscht...
Code:
    		while(temp != null)
    			{
    			temp = PReaderBuffer.readLine();
    			temp2 = temp1.getText();
    			temp3 = temp2+"\n"+temp;
    			if(temp != null)
    				{
    				temp1.setText(temp3);
    				}
    			else
    				{
    				PReaderBuffer.close();
    				temp = null;
    				}
    			}
    		FileWriter PWriter = new FileWriter("profile.fr");
    		BufferedWriter PBuffer = new BufferedWriter(PWriter);
    		String Name1 = new String(temp3+"\n"+Name);
    		PBuffer.write(Name1);
    		PBuffer.close();
    		}

				catch (EOFException ende)
				{
				}
				catch (IOException ef)
				{
				}

Was ist da dran falsch? Also es soll der inhalt eines textfensters gelesen werden, es soll die gesammte datei profile.fr gelesen werden, der inhalt des textfensters soll an den des textdokuments gebunden werden und das ganze soll dann als profile.fr abgespeichert werden....

EDIT: der String temp wird vorher auch definiert heißt soviel wie der müsste immer neu gesetzt werden während der while schleife....
 

merxleben

Aktives Mitglied
Onkel markus hat gesagt.:
Bin grad am verzweifeln:
ab sogar schon doppelte sicherheit reingesetz bringt aber nüscht...

Dann mußt du sie auch nutzen. Sprich bevor du temp an die exestierende Zeichenkette anhängen möchtest, solltest du überprüfen ob sie nicht null ist.

Code:
while(temp != null)
  {
    temp = PReaderBuffer.readLine();
    temp2 = temp1.getText();
    /* temp3 = temp2+"\n"+temp; */
    if(temp != null)
      {
        // temp3 = temp2 + "\n" + temp;
        temp3 = temp1.getText+ "\n" + temp; // du kannst auch gleich temp2 ersetzen
        temp1.setText(temp3);
      }
    else
      {
        PReaderBuffer.close();
        temp = null;
      }
  }

Achso in deinem else Zweig brauchst du temp nicht auf null setzen, weil es ist ja schon null, sonst kämst du ja nicht an diese Stelle.

Was allerdings noch besser wäre, wenn du anstelle eine while Schleife eine do-while-Schleife verwenden würdest. Sähe ungefähr so aus

Code:
temp = PReaderBuffer.readLine()
if(temp!=null)
  {
    do 
      {
        temp3 = temp1.getText + "\n"+ temp;
        temp1.setText(temp3);
        temp = PReaderBuffer.readLine();
      }
    while(temp!=null);
  }
PReaderBuffer.close();

Code ist nicht getestet, sollte aber funktionieren.

Martin
 

Onkel markus

Bekanntes Mitglied
Cooool THX!!
Funtzt..
Aber: im Inselbuch steht genau so ein code wie ich ihn hatte(hab nachgeschaut) und da war der fehelerr nicht da...
kp auch egal;-)
 

merxleben

Aktives Mitglied
merxleben hat gesagt.:
Was allerdings noch besser wäre, wenn du anstelle eine while Schleife eine do-while-Schleife verwenden würdest. Sähe ungefähr so aus

Code:
temp = PReaderBuffer.readLine()
if(temp!=null)
  {
    do 
      {
        temp3 = temp1.getText + "\n"+ temp;
        temp1.setText(temp3);
        temp = PReaderBuffer.readLine();
      }
    while(temp!=null);
  }
PReaderBuffer.close();

Code ist nicht getestet, sollte aber funktionieren.

Martin

Da hab ich ein wenig Unsinn erzählt. Es muß natürlich eine while Schleife sein. Vernüftiger sieht das so aus

Code:
temp = PReaderBuffer.readLine()
while(temp!=null)
  {
      temp3 = temp1.getText + "\n"+ temp;
      temp1.setText(temp3);
      temp = PReaderBuffer.readLine();
  }
PReaderBuffer.close();

Wichtig bei solchen Konstruktionen ist halt, daß die Belegung der Abbruchbedingung einmal direkt vor dem while Block erfolgt und einmal als letzte Anweisung.

Martin
 

merxleben

Aktives Mitglied
Hi,

nur mal neugieriger Weise. Kannst du mal meine zweite Variante testen. Und falls diese nicht funktionieren sollte das Fehlverhalten beschreiben.

Schonmal danke

Martin
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben