String in Klasse überg. und ausgeben

  • Themenstarter Themenstarter Vox-T
  • Beginndatum Beginndatum
V

Vox-T

HI ich hab ein Problem zu verstehen wie ich ein String einer Klasse über gebe und dann auslesen kann.

Java:
public static void main(String[] args) {
...
Ausgabe x = new Ausgabe();

String zeile =" das ist eine Beipielzeile"; 

x.check(zeile);
...
}

public class Ausgabe 
{	
	public void check(String zeile) throws IOException
	{	
	    System.out.println(zeile);
       }
}

Leider wird nur "null" ausgegeben. warum wird der Satz "das ist eine Beispielzeile" nicht ausgegeben?
Ich freue mich über Hilfe.
 
Hallo,

so sollte funktionieren. Wahrscheinlich liegt der Fehler wo anders.

Gruß

Sascha
 
Zeig mal den restlichen Code.
Das ist soweit fehlerfrei (vom Code her sollte dir zwar wegen der IOException ein Unresolved compilation problem fliegen, aber das hast du sicher im ausgelassen Teil behandelt).
 
also der ursprungscode ist etwas anders

Java:
public static void main(String[] args) {
...
Ausgabe x = new Ausgabe();
 
String zeile =" ";
String[] werte = null;
......
 BufferedReader F = new BufferedReader(cach);

  while((zeile = F.readLine())!= null){  
					 
		werte = zeile.split(" "); 
  } 

x.check(werte);
...
}
 
public class Ausgabe
{   
    public void check(String[] werte) throws IOException
    {   
        System.out.println(werte);
       }
}

Das Resultat ist, das er mir in werte[0] ein Wert 390 und in werte[1] , den wert 400 ausgiebt.
eine Textatei wird eingelesen mit 7 wertepaaren. 390 und 400 inst das letzt werte paar. die anderen werden bei der übergabe nicht angezeigt.
Hab keine Ahnung woran das liegen könnte
 
Das liegt daran:
Java:
String[] werte = null;

while((zeile = F.readLine())!= null){
    werte = zeile.split(" ");
}
Du liest eine Zeile ein, splittest diese, erhälst deswegen auch ein Array und speicherst die Referenz durch in der Array-Variable werte. So, aber beim nächsten Durchlauf passiert nochmal das Gleiche und die alte Referenz geht flöten und das geht die ganze Zeit so weiter bis die letzte Zeile erreicht wurde. Am Ende bleibt nur die letzte Zeile hängen und die vorherigen fliegen im Nirvana rum.

Du müsstest dir schon was überlegen, wie du alle Zeilen speichern könntest, z.B. könnte man eine Liste dafür nehmen.
Java:
List<String[]> zeilen = new ArrayList<String[]>();


while((zeile = F.readLine())!= null){
    zeilen.add(zeile.split(" "));
}

Die Ausgabe müsstest du dann etwas ändern, also die check-Methode.
Java:
public void check(List<String[]> werte) throws IOException {  
    for(String[] arr : werte) {
        System.out.println(Arrays.toString(arr));
    }
}
 
Zurück