neuling sucht hilfe

nobbi

Grünschnabel
Hallo,
ich hab da ein kleines problem. ich soll für die arbeit ein kleines java programm schreiben.
mein chef meinte du hast ja mal java gehabt..."joar klaro chef vor 8 jahren" grundkenntnisse....

vll darf ich hier mal um eure hilfe bitten :)
ich kann nämlich nicht mehr weiter.

es soll ein programm werden, um eine logdatei *csv*, aus einer telefonanlage einzulesen und anzuzeigen, nach anschlussnummern suchen soll und alle gespeicherten logs anzeigen soll.

ich kann ja mal das posten was ich schon habe.

mein eigentliches porblem ist das wenn ich die log datei einlese und dann alle daten anzeigen lasse mir immer entweder die erste zeile oder die letzte zeile fehlt.
die csv daten sehen so aus:

Anschlussnr.;Anrufnr.;Datum;Startzeit;Datum;Endzeit
04421203046;0321544861;01.02.2011;23:58:12;02.02.2011;00:01:12
04421567544;0323134551;03.01.2011;21:28:12;03.01.2011;21:33:12
04421567544;0323134551;03.01.2011;21:28:12;03.01.2011;21:33:12

wäre geil wenn mir wer n bisschen unter die arme greifen kann beim programmieren******
natürlich will ich auch programm abstürze vermeiden wenn mal eine falsche eingabe getätigt worden ist oder garnichts

Java:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Telefonlogs {
    
    //Variable speichert den gewünschten Menüpunkt
    public String userEingabe="";
    //Standartverzeichnis der Logdatei wenn nicht geändert wird
    public String path = "files/log.csv";
    
    //Diese Methode zeichnet ein Menü und speichert die gewünschte Funktion als String(1,2,3,4) in einer
    //Variable. Danach werden Fallabfragen gemacht und die jeweilige Methode aufgerufen die mit der
    //geschriebenen Zahl in Verbindung steht.
    public void getMenu() throws IOException{
        
        InputStreamReader input = new InputStreamReader (System.in);
        BufferedReader reader = new BufferedReader(input);
        String line="";
        
        System.out.println("MENU");
        System.out.println("--------------------------");
        System.out.println("Drücken Sie die gewünschte Taste für die Aktion");
        System.out.println("");
        System.out.println("'1': Datei laden");
        System.out.println("'2': Nach Anschlussnummer suchen");
        System.out.println("'3': Alle gespeicherten Logs ausgeben");
        System.out.println("'4': Programm schließen");
        
        //Hier wird die Benutzereingabe gespeichert
        line = reader.readLine();
        userEingabe = line;
        
        //Abfrage der gewünschten Methodenaufrufe
        
        if(userEingabe.equals("1")){
            ladeDatei();
        }
        if(userEingabe.equals("2")){
            
            sucheAnschluss(path);
        }
        if(userEingabe.equals("3")){
            zeigeAlle();
        }
        if(userEingabe.equals("4")){
            System.out.println("Programm wird geschlossen");
            System.exit(0);
        }
    }
    
    //Diese Methode splittet alle Zeilen aus der .csv Datei und durchsucht die gesplitteten
    //String welche in einem Array gespeichert sind auf Gleichheit mit der vom Anwender eingetragenen
    //Anschlussnummer
    public void sucheAnschluss(String path) throws IOException{
        
        FileReader fr = new FileReader(path);
        BufferedReader reader = new BufferedReader(fr);
        InputStreamReader input = new InputStreamReader(System.in);
        BufferedReader eingabe = new BufferedReader(input);
        
        String splitArray[] = null;
        String zeile ="";
        String anschlussnr="";
        String[] datensatz;
        
        System.out.println("Geben Sie die Anschlussnummer ein:");
        anschlussnr = eingabe.readLine();
        
        while((zeile=reader.readLine())!=null){
        
                if(zeile.regionMatches(0,anschlussnr,0,anschlussnr.length())){
                    System.out.println("Anschluss nr gefunden");
                    datensatz = zeile.split(";");
            
                    for(int i=0;i<datensatz.length;i++){
                        System.out.println(datensatz[i]);
                    }
                }
                //Ausgabe wenn die gesuchte Nummer nicht gefunden werden konnte
                else{
                    System.out.println("Keine Übereinstimmung gefunden");
                    break;
                }
            }
        
        System.out.println(""); //Abstandshalter
        getMenu();
    }
    //Diese Methode dient als eine Art Filechooser, hier kann der Anwender den Pfad zur  Datei
    //optional eingeben. Die Eingabe überschreibt die Standardpfadangabe public path
    public void ladeDatei() throws IOException{
        
        InputStreamReader input = new InputStreamReader(System.in);
        BufferedReader eingabe = new BufferedReader(input);
        System.out.println("Geben Sie den Pfad zur gewuenschten Datei an");
        System.out.println("Beispiel C:\\Programme\\log.csv");
        path = eingabe.readLine();
        System.out.println(""); //Abstandhalter
        getMenu();
    }
    
    //Diese Methode listet alle Logdatensätze auf
    public void zeigeAlle() throws IOException{
        
        FileReader fr = new FileReader(path);
        BufferedReader reader = new BufferedReader(fr);
        String splitArray[]=null;
        String line="";
        
        //While Schleife mit Abruchkriterium wann aufgehört werden soll
                while((line=reader.readLine())!=null){
                
                splitArray = line.split(";");
                
                for(int i=0;i<splitArray.length;   i++){                  //
                
                //Sorgt dafür, das nach jedem 6. String ein Zeilenabstand kommt

                if(i%9!=6){                                                        //
                    System.out.print(splitArray[i] + " ");
                }
               else{
                    System.out.println(" ");
                }
            }
        }
        System.out.println("");//Platzhalter
        System.out.println(""); //Platzhalter
        getMenu();
    }
    //Aufruf der Main Methode
    public static void main (String[]args) throws IOException{
        
        //Ein neues Objekt vom Typ Telefonlogs erzeugen
        Telefonlogs t = new Telefonlogs();
        
        //Informationen für den Anwender beim Programmstart 
        System.out.println("TELEFONLOG PROGRAMM");
        System.out.println("Von ...");
        
        System.out.println("");
        System.out.println("ACHTUNG******");
        System.out.println("Es wurde eine vorgelegte Logdatei beim Programmstart geladen");
        System.out.println("Diese befindet sich im Programmordner 'files'");
        System.out.println("");
        //Beim Start des Programms das Menü anzeigen lassen
        t.getMenu();
    }
}
 
Zuletzt bearbeitet von einem Moderator:
Hi,

Code:
String s = "Anschlussnr.;Anrufnr.;Datum;Startzeit;Datum;Endzeit
04421203046;0321544861;01.02.2011;23:58:12;02.02.2011;00:01:12
04421567544;0323134551;03.01.2011;21:28:12;03.01.2011;21:33:12
04421567544;0323134551;03.01.2011;21:28:12;03.01.2011;21:33:12";
String[] text = s.split("\n");

Grüße Maik
 
@Maik
Das wird SO nicht funktionieren da in dem von dir gepostetem String schon 6 Compiler-Fehler stecken.
Dazu wird das Ergebnis nur ein einziges Array-Element sein da eben genau "\n" fehlt.

@TO
Also ich persönlich habe nicht die lust von Maik mir DAS durchzulesen. Dafür gibt es die [code=java][/code]-Codetags. Bitte benutze diese.
 
Bei mir geht das Programm, da fehlen keine Zeilen. Habe bloss die Ausgabe etwas geändert:
Java:
System.out.print(splitArray[i] + " ");
if (i % 6 == 5) {
  System.out.println(" ");
}
 
Zuletzt bearbeitet:
Hallo nobbi,

erstmal herzlich wilkommen.
Leider muss ich dich direkt schon darauf hinweisen, dass wir hier im Forum etwas auf die Form der Beiträge achten. Dazu zählt auch die Groß- und Kleinschreibung.
Ich würde dich doch bitten, auf diese zu achten.

Gruß

Sascha
 
Zurück