# Bestimmte Zeile aus CSV ausgeben



## Goodnight (3. Jul 2009)

Hallo

So, da ja doppelt besser hält: 

Ich habe in einer CSV fünf Zeilen, ich gebe ein welche Zeile ich brauche und der soll den Inhalt der Zeile ausspucken. Folgenden Ansatz habe ich und komme jetzt nicht wirklich weiter:


```
import java.io.*;

class test
{
  public static void main ( String[] args ) throws IOException
  {
	  
	  
	  int Eingabe;
	  String zeile;
	 
	  BufferedReader stdin = new BufferedReader(
		        new InputStreamReader( System.in ) );
	  
	  System.out.println("Geben Sie die Kundennummer ein");
	    zeile = stdin.readLine();
	    Eingabe = (int) Double.parseDouble(zeile);
	  
	  
	  
	  File dir = new File("C:\\Dokumente und Einstellungen\\p1\\Desktop\\Filme_Test\\kunden.csv");
	  File[] fileList = dir.listFiles();

	  	  
	  for(File f : fileList) {
		  
		  String sFilename = f.getName();
		  int iIndexOfExt = sFilename.indexOf(".");
		  String sExtension = sFilename.substring(iIndexOfExt + 1);
		  		  
		  System.out.println(?);
	  		   
  }
 
}
```

Eine Komplett-Lösung muss nicht sein, soll ja niemand meine Aufgabe für mich lösen, aber einen kleinen Ansatz zur Problemlösung könnte ich schon brauchen.


----------



## SlaterB (3. Jul 2009)

du musst die Datei mit einer while-Schleife einlesen, wie du es schon kennst,
nebenhei erhöst du eine Zähl-Variable, bei 5 fertig


----------



## Goodnight (3. Jul 2009)

SlaterB hat gesagt.:


> du musst die Datei mit einer while-Schleife einlesen, wie du es schon kennst,



Hab ich gemacht



SlaterB hat gesagt.:


> nebenhei erhöst du eine Zähl-Variable, bei 5 fertig



Hab ich nicht gemacht... Da passt der Smiley ja wunderbar: :bahnhof: 

PS: Ja, ich weiß... Ich werd mir demnächst mal ein Buch besorgen und von vorne anfangen. Ist ja traurig...


----------



## faetzminator (3. Jul 2009)

wie wärs mit folgendem Metacode

```
für alle Zeilen in der Datei
    wenn Zeilennummer gleich benötigte Nummer
        ausgeben
```


----------



## Goodnight (3. Jul 2009)

Gut, die Theorie bzw. einen gedanklichen Ablauf herzustellen ist nicht so wirklich das Problem, denn sowas ähnliches habe ich mir auch zurecht gelegt/gedacht. 

Nutzt mir nur nix wenn ich die Befehle nicht kenne. Ich probiere zwar rum, aber ohne Sinn und Verstand (und vor allem Wissen) macht das irgendwie keinen Sinn. ^^

Frage mich langsam auch, was der gute Mann erwartet nach dem Tutorial...


----------



## SlaterB (3. Jul 2009)

Variable anlegen:
int count = 0;
Variable erhöhen:
count = count +1;

hammerharte Voraussetzungen


----------



## java66 (3. Jul 2009)

schnipsel


```
File f= new File("test.txt");
FileReader fr= new FileReader(f);
BufferedReader br=new BufferedReader(fr);
String tmp;
int zeile=5;
for(int i=0;i<zeile;i++)
{
br.readLine();   //liest bis zur 4ten
i++;
}
tmp=br.ReadLine //liest nun die 5. ein
system.out.println("Zeile"+zeile+"\n");
```
nicht getestet sollte aber so funktionieren glaube ich


----------



## Goodnight (3. Jul 2009)

Naja, für jemanden, der seit ner Woche Java aus dem Tutorial kennt, schon. 

Während ich auf eine Antwort gewartet habe, habe ich mal einen anderen Ansatz versucht. Nur bekomme ich da noch einige Fehler und weiß auch gar nicht ob das so umsetzbar ist. 


```
import java.io.*;

class test
{
  public static void main ( String[] args ) throws IOException
  {
	double eingabe;
	String zeile;
	  
    FileReader fileIn = new FileReader("" +
    		"C:\\Dokumente und Einstellungen\\p1\\Desktop\\Filme_Test\\kunden.csv");
    		 	
    BufferedReader buff = new BufferedReader(fileIn);
    
    BufferedReader stdin = new BufferedReader(
	        new InputStreamReader( System.in ) );
    
    
    
    System.out.println("Geben Sie die Kundennummer ein:");
    zeile = stdin.readLine();
    eingabe = Double.parseDouble(zeile);
    
    
    String string = "kunde.csv";
    while (( string = buff.readLine() ) != null)
    {
        System.out.println(string);
        
                
        if (eingabe != null)
         string.split(string);
        
            System.out.println();
        
        else 
        	
        	System.out.println("Keine passende Kundennummer gefunden!");
    }
    
    
    
  }
}
```


EDIT

@ Java66: Danke, ich probier da an dem Ding auch ein wenig rum.


----------



## SlaterB (3. Jul 2009)

double kann nie null sein, das sagt die Fehlermeldung doch auch, was kann man da noch mehr zu sagen?

schreibe nie if else ohne Klammern { }

Klassen groß schreiben


@java66

in einer for-i-Schleife manuell noch i zu erhöhen ist kein guter Vorschlag


----------



## Goodnight (3. Jul 2009)

Gut, ein klein wenig rumexperimentiert, das hier kam bei raus:


```
import java.io.*;

class test
{
  public static void main ( String[] args ) throws IOException
  {
	int eingabe;
	String zeile;
	  
    FileReader fileIn = new FileReader("" +
    		"C:\\Dokumente und Einstellungen\\p1\\Desktop\\Filme_Test\\kunden.csv");
    		 	
    BufferedReader buff = new BufferedReader(fileIn);
    
    BufferedReader stdin = new BufferedReader(
	        new InputStreamReader( System.in ) );
    
    
    
    System.out.println("Geben Sie die Kundennummer ein:");
    zeile = stdin.readLine();
    eingabe = (int) Double.parseDouble(zeile);
    
    
    String string = "kunde.csv";
    while (( string = buff.readLine() ) != null)
    {
        System.out.println(string);
        
        
      

        String[] splitArray = string.split(";");
        
        String kdnNr = splitArray[0];
        
        String string1 = "1";
        String string2 = "1";
    
        if (string1.equals(string2))
        {
        	
        
        
    }
            
        else 
        {
        	System.out.println("Keine passende Kundennummer gefunden!");
    }
      
    
  }
  }
}
```

Ausgabe ist diese hier:

Geben Sie die Kundennummer ein:
3
1;Heinz;Spack;45;Straße 1;München;
Keine passende Kundennummer gefunden!
2;Klaus;Hack;33;Straße 2;Nürnberg;
Keine passende Kundennummer gefunden!
3;Wolfi;Rahm;55;Straße 3;Regensburg;
Keine passende Kundennummer gefunden!
4;Rainer;Wass;23;Straße 4;Augsburg;
Keine passende Kundennummer gefunden!
5;Michael;Wolf;38;Straße 5;Würzburg;
Keine passende Kundennummer gefunden!


----------



## SlaterB (3. Jul 2009)

ist eine Frage offen?

deine Ausgabe finde ich allerdings seltsam, string1 und string2 sind beide immer "1", 
bei mir kommt die Ausgabe 'Keine passende Kundennummer gefunden!' nicht


----------



## Goodnight (3. Jul 2009)

Naja, anscheinend stimmt ja was nicht, ergo wäre die Frage: Was ist falsch. 

Die Ausgabe stammt nicht von mir, sondern sollte eine Art Starthilfe sein. Entsprechend hab ich es so gelassen wie es eingegeben wurde. Ich tüftel hier aber wie ich das ganze beenden könnte.


----------



## SlaterB (3. Jul 2009)

dir ist also unklar, dass du z.B. den String kndNr mit dem double-Wert eingabe vergleichen musst?

es geht doch darum, die passende Kundennummer zu finden, wie kann dann obiger Zusammenhang nicht klar sein?
wenn du nicht grundlegend nachdenkst, sondern hier anscheinend Schritt für Schritt begleitet werden willst,
dann ist das mir persönlich zuviel Arbeit, ich werde wohl nicht weiter antworten


----------



## Goodnight (3. Jul 2009)

Nun gut, kann man natürlich nichts machen. Nichtsdestotrotz danke für die bisherige Hilfe.


----------



## Leroy42 (3. Jul 2009)

> ```
> int iIndexOfExt = sFilename.indexOf(".");
> String sExtension = sFilename.substring(iIndexOfExt + 1);
> ```



Und was passiert, wenn der "." gar nicht in sFilename enthalten ist? :shock:


----------

