So Lesen Sie eine Textdatei mit einer Mischung aus int und strings getrennt durch Leerzeichen und speichern in arrays

Ich habe eine Textdatei mit etwa 200 Artikel-Nummern und Beschreibungen, die wie folgt formatiert (ohne Aufzählungszeichen):

  • 1642 Reiner Wolle t-shirt
  • 613 Rot geschnürte Schuhe
  • 3477 Blauen Hut mit Feder
  • ...

Ich versuche zu Lesen und speichern Sie die Teilenummern und Beschreibungen in den jeweiligen arrays, welche getrennt durch ein Leerzeichen. Meine Fragen sind:

  1. Ich will ignorieren Sie die Leerzeichen in der Beschreibung.
  2. Wenn ich Sortieren oder löschen Sie die Elemente, die ich will, um sicherzustellen, dass die Beschreibung wird gelöscht.

Hier ist, was ich bisher versucht habe, aber immer ArrayIndexOutOfBoundsException-Fehler und ich bin nicht mal sicher, ob es Lesen Sie die Beschreibung richtig:

private Scanner file;
private int item = 0;
private String desc = "";
private int[] itemArr = new int[200];
private String[] descArr = new String[200];
int n = 0;


public void openFile(){

    try{
        file = new Scanner(new File("inventory.txt"));
    }

    catch(Exception e){
        System.out.println("file not found");
    }

}

public void readFile(){         

    while(file.hasNextLine()){    
        if (file.hasNextInt()){     
            item = file.nextInt();
        }

        while(!file.hasNextInt() && !file.hasNextLine()){
            desc = desc + file.next() + " ";
        }

        itemArr[n] = item;
        descArr[n] = desc;
        n++;
    }

    for (int i = 0; i < n; i++){
        System.out.println(itemArr[i] + " " + descArr[n] + "\n");
    }
    System.out.println("Total Records (n): " + n);

}

Oder gibt es eine bessere Möglichkeit, dies zu tun? Ich habe einige post über Muster und Regex, aber nicht sicher, wie Sie Sie verwenden, entweder.

Danke!

Mein Rat wäre, umgestalten, Ihre input-Datei-format in etwas mehr Vertreter, wie JSON oder XML, wenn Sie fühlen sich die Verwendung einer Datenbank ist ungeeignet für das problem, das Sie versuchen zu lösen. Feste array-Indizierung ist in Ordnung für einen kleinen test-case, aber es ist nicht robust genug, um elegant behandeln änderungen in der Eingabe-Daten-Strukturen. Als bonus, JSON umgehen würden, Typ-Bezeichnung und Deserialisierung für Sie.
"über 200 Modelle"? Wenn Sie nicht wissen, die Länge, die für sicher, ich würde empfehlen die Verwendung einer Liste. Darüber hinaus würde ich empfehlen, ein Element-Objekt zur Speicherung der Daten, anfertigen der Liste speichern <Item>. Regex ist der Weg zu gehen für das herausziehen der einzelnen Stücke, aber ich bin nicht gut mit es so ich kann nicht geben Sie ein Muster
Sie haben, um Elemente wie "1234 Offizielle 39ers Jersey"?
Nein, nur die Charaktere in der Beschreibung MrGomez:danke, klingt aber über meine mickrigen Gehirn Kapazität x( ggrigery: ich schau mal in die Listen, danke
Ich habe versucht, herauszufinden, die regex pattern-ohne Erfolg. Ich denke, es ist etwas ähnlich wie (\d+\D+). Wenn Sie fügen Sie die regex tag, um Ihre Frage, die ein regex-guru kann Wandern durch und geben Ihnen eine hand. Viel Glück 🙂

InformationsquelleAutor OverAir | 2012-03-19

Schreibe einen Kommentar