[Java] Problem bei Zeichen in Liste einfügen

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Fanatic, 15. Januar 2009 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 15. Januar 2009
    Problem bei Zeichen in Liste einfügen

    Tach,

    Ich möchte alle Zeichen eines Strings in eine Liste einfügen. Jedoch darf jedes Zeichen nur einmal in der Liste enthalten sein. Ist ein Zeichen mehrmal in dem String vorhanden, so soll die Anzahl des jeweiligen Character in der Liste einfach um erhöht werden.

    Die Liste hat Elemente vom Typ "Inhalt":
    PHP:
    public class  Inhalt  {
        
        public 
    char Zeichen ;
        public 
    int Anzahl  0 ;
        
        
    Inhalt  ( char pZeichen int pAnzahl ){
            
    this . Zeichen  pZeichen ;
            
    this . Anzahl  pAnzahl ;
        }

    }
    Mein Source zum Einfügen der jeweiligen Zeichen schaut folgendermaßen aus:
    PHP:
    public static  void ListeErstellen ( String pZeichen ){
            
    //Erste Zeichen einfügen
            
    Liste . add (new  Inhalt ( pZeichen . charAt ( 0 ), 1 ));
            
            
    //Weitere Zeichen in Liste einfügen, ggf. Anzahl erhöhen
            
    for ( int Zeichendurchlauf  1 Zeichendurchlauf  <=  pZeichen . length () - 1 ;   Zeichendurchlauf ++){
                
    boolean Zeichenvorhanden  false ;
                
                
    Iterator  < Inhalt Liste . iterator ();
                
                while (
    I . hasNext ()){
                    if (
    I . next (). Zeichen  ==  pZeichen . charAt ( Zeichendurchlauf )) {
                        
    Zeichenvorhanden  true ;
                       
    I . next (). Anzahl ++; <  Code - Zeile #29
                    
    }
                }
                if (
    Zeichenvorhanden  ==  false ){
                    
    Liste . add (new  Inhalt ( pZeichen . charAt ( Zeichendurchlauf ), 1 ));
                }
            }
        }
    Leider bekomme ich andauernd folgende Fehlermeldung:
    Wo ist der Fehler ?
     
  2. 15. Januar 2009
    AW: Problem bei Zeichen in Liste einfügen

    Code:
    I.next().Anzahl++;
    ersetzen mit:
    Code:
    I.next().Anzahl += 1;
    //edit: nope, in javascript geht das, dann sollte das in java auch gehen... sry
     
  3. 15. Januar 2009
    AW: Problem bei Zeichen in Liste einfügen

    Die Fehlermeldung bleibt leider:baby:

    //edit: nope eclipse spuckt immer noch den fehler aus:

    PHP:
         //Zeichen in Liste einfügen
        
    public static  void ListeErstellen ( String pZeichen ){
            
    //Erste Zeichen einfügen
            
    Liste . add (new  Inhalt ( pZeichen . charAt ( 0 ), 1 ));
            
            
    //Weitere Zeichen in Liste einfügen, ggf. Anzahl erhöhen
            
    for ( int Zeichendurchlauf  1 Zeichendurchlauf  <=  pZeichen . length () - 1 Zeichendurchlauf ++){
                
    boolean Zeichenvorhanden  false ;
                
                
    Iterator  < Inhalt Liste . iterator ();
                
                while (
    I . hasNext ()){
                    if (
    I . next (). Zeichen  ==  pZeichen . charAt ( Zeichendurchlauf )) {
                        
    Zeichenvorhanden  true ;
                        
    I . next (). Anzahl  +=  1 ;
                    }
                }
                if (
    Zeichenvorhanden  ==  false ){
                    
    Liste . add (new  Inhalt ( pZeichen . charAt ( Zeichendurchlauf ), 1 ));
                }
            }
        }
    {bild down}
     
  4. 15. Januar 2009
    AW: Problem bei Zeichen in Liste einfügen

    probier mal:
    Code:
    ((Inhalt) I.next()).Anzahl++;
     
  5. 15. Januar 2009
    AW: Problem bei Zeichen in Liste einfügen

    Soweit ich weiß ist Iterator einfach ein Zeiger, der die Liste durchläuft und auf das jeweilige Listenelement zeigt. Dementsprechend müsste mein Quellcode eigentlich richtig sein. Leider funktioniert es irgendwie nicht
     
  6. 15. Januar 2009
    AW: Problem bei Zeichen in Liste einfügen

    Code:
    if (I.next().Zeichen == pZeichen.charAt(Zeichendurchlauf)) {
     Zeichenvorhanden = true;
     I.next().Anzahl += 1;
    }
    da is der fehler, denn I.next() wird bei zweitenmal NULL oder FALSE zurückgeben wenn nix mehr vorhaden is.
    I.next() rückt nämlich den zeiger eins weiter und du rufst die methode zweimal auf.

    so sollte es gehen:
    Code:
    Inhalt i = I.next();
    if (i.Zeichen == pZeichen.charAt(Zeichendurchlauf)) {
     Zeichenvorhanden = true;
     i.Anzahl += 1;
    }
     
  7. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.