einlesen mehrer Strings

  • Hab wieder mal ein problem


    Mit readWord() kann ich immer nur ein Wort einlesen. sobald ein Leerschritt ist, ist der string zu ende.


    Muss aber jetzt mehrere Wörter einlesen, wobei ich nicht weis wieviele.


    ich zeig es am besten an einem beispiel


    Bsp.:


    Hugo Erika Peter usw.


    mit dem readWord
    liest es mir aber nur den Hugo ein.
    wie kann ich jetzt aber alle drei namen in einen String lesen?

  • wie lautet die angabe deiner spez?
    mit readWord kannst nur mit ner schleife das problem lösen.
    und sonst musst halt ne endbedingung finden, an dem du erkennst, dass das der letzte String war.
    der letzte string unterscheidet sich sicher von den vorhergehenden. sei es durch länge, oder einer bestimmten zeichenfolge etc.

    Otto: Apes don't read philosophy. - Wanda: Yes they do, Otto, they just don't understand
    Beleidigungen sind Argumente jener, die über keine Argumente verfügen.
    «Signanz braucht keine Worte.» | «Signanz gibts nur im Traum.»


    Das neue MTB-Projekt (PO, Wiki, Mitschriften, Ausarbeitungen, Folien, ...) ist online
    http://mtb-projekt.at

  • Simulation eines Viruses


    die eingabe wird mit = beendet


    1(2,3) 2(1) 3(2,1) [2,3] {1} =


    stellt drei rechner dar
    in [] stehen die rechner die nich anfällig für den Virus sind und in {}steht der rechner bei dem der Virus startet

  • naja das heißt doch nur das du das readWord() in eine schleife baust die so lange läuft bis ein "=" eingegeben wurde.
    zb so
    while(true) {
    String s = EprogIO.readWord();
    if (s.equals("="))
    break;


    ...do stuff
    }

  • So kann es auch nicht funktionieren, das Programm bei jedem durchlauf die Variable s "überschreibt".


    ich würd einfach mit nem Array oder StringBuffer lösen:


    StringBuffer s = new StringBuffer("");


    while(true)
    {
    String a = eprog.EprogIO.readWord();
    if (a.equals("="))
    break;
    else
    s.append(a).append(" ");
    }



    Dann hast du die ganze Eingabe in s mit Leerzeichen getrennt. Jetzt kannst du es einfach mit einer for schleife zerlegen.


    int anzahl = 0;
    for(int i = 0; i < s.length(); i++)
    {
    if(s.charAt(i) == ' ')
    anzahl++;
    }


    String[] myString = new String[anzahl];
    int j = 0; int limit = 0;


    for(int i = 0; i < s.length(); i++)
    {
    if(s.charAt(i) == ' ')
    {
    myString[j] = s.substring(limit,i);
    limit = i + 1;
    j++;
    }
    }



    so müsste es eigentlich klappen ...... glaub aber das geht besser.


    Mfg

    "Lange Haare, Stinken, Haschisch, politische Agitation und gleichzeitig schulische Erfolge. Ich hatte nicht vor mir von irgendjemanden noch einmal etwas sagen zu lassen. Ich tat nur mehr das was ich wollte - und ich wollte gescheit werden. Vielleicht Pilot werden oder Philosoph oder Schriftsteller." (<-- Josef Haslinger)