Array auszählen

Jinchuuriki

Mitglied
Hallo,
ich habe hier eine kleine Aufgabe, an der ich schon paar Stündchen sitze, aber irgendwie nicht so richtig weiter komme. Ziel der Aufgabe ist es, bei diesen 12 Arrays, auszuzählen wie viele Buchstaben jedes hat. Ich habe das mit "System.out.println(bezeichnung.length);" versucht, aber er gibt mir bei jedem Array die Anzahl von "bezeichnung[0]" aus. Ich bin noch ein Frischling, dacher stehe ich richtig auf dem Schlauch.

Vielen Dank schon mal für die Hilfe im voraus!
Java:
public class Aufgabe1_1 {
   
    public static void main(String[] args){
        String [] bezeichnung = new String [12];
       
        bezeichnung [0] = "Mehrkornbrot";
        bezeichnung [1] = "Brötchen";
        bezeichnung [2] = "Kissinger\n";
        bezeichnung [3] = "Hörnchen";
        bezeichnung [4] = "Brot";
        bezeichnung [5] = "Semmel\n";
        bezeichnung [6] = "Weck";
        bezeichnung [7] = "Wohnschnecke";
        bezeichnung [8] = "Baguette\n";
        bezeichnung [9] = "Kipf";
        bezeichnung [10] = "Eierlikör-Sahnetorte";
        bezeichnung [11] = "Roggenmischbrot";
       
       
        for ( String a : bezeichnung){
        System.out.println(a);
       
        System.out.println(bezeichnung.length);
        }
    }

}
 

Jinchuuriki

Mitglied
Also das habe ich auch schon versucht und wenn ich das umschreibe in
"System.out.println(a + '\t'+'\t' + a.length);" ,mit den Tabs experimentiere ich auch gerade, dann kriege ich Fehler
"
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
length cannot be resolved or is not a field

at Aufgabe1_1.main(Aufgabe1_1.java:22)"
 

Robat

Top Contributor
Sorry hab zu schnell auf Enter gedrückt.
Es muss natürlich a.length() sein. Bei Strings ist es ja eine Methode ;)
 

Viktim

Bekanntes Mitglied
also was du machen könntest ist einfach eine for-Schleife, die alle Elemente deines Arrays durchgeht und die Längen auf die vergangen rechnet.
 

Jinchuuriki

Mitglied
Danke für die Hilfe :D ich habe das hinbekommen.
@Viktim: In der Aufgabenstellung sollte ich das aber mit Array machen.

Jetzt habe ich ein anderes Problem :/

Ich soll die ganzen Selbstlaute in dem Array auszählen. Da ich noch einen Code aus anderen
Aufgaben hatte:
Java:
public class SwitchBreak {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String dnaBases = "CGCAGTTCTTCGGXAC";
        int a = 0, g = 0, c = 0, t = 0;
       
        loop:
        for ( int i = 0; i < dnaBases.length(); i++ )
        {
            switch ( dnaBases.charAt(i))
            {
            case 'A': case 'a':
                a++;
                break;
            case 'G': case 'g':
                g++;
                break;
            case 'C': case 'c':
                c++;
                break;
            case 'T': case 't':
                t++;
                break;
            default:
                System.err.println("Unbekannte Nukleinblasen " + dnaBases.charAt(i));
                break loop;
            }
        }
        System.out.printf(" Anzahl: A = %d, G = %d, C = %d, T = %d%n", a, g, c, t);
    }

}

Dachte ich mir, dass ich den umschreibe und beide zusammenfüge. Leider kriege ich irgendwie gar nichts dabei raus, also nichts richtiges.
Mein jetziger Code:
Java:
public class aufgabe1 {
   
    public static void main(String[] args){
        String [] bezeichnung = {
                "Mehrkornbrot", "Brötchen", "Kissinger", "\nHörnchen",
                "Brot", "Semmel", "\nWeck", "Wohnschnecke", "Baguette", "\nKipf",
                "Eierlikör-Sahnetorte","Roggenmischbrot"
       
        };
        String [] buchstaben = bezeichnung;
       
        int a = 0, e = 0, i = 0, o = 0, u = 0;
        for(String b : bezeichnung){
           
       
            if(b.length() <= 7)
                System.out.println(b + '\t'+'\t'+'\t' + b.length());
            else if(b.length() >= 16)
                System.out.println(b + '\t' + b.length());
            else
            System.out.println(b + '\t'+'\t' + b.length());       
        }
       
           
               
               
        loop:       
        for ( int j = 0; j < buchstaben.length; j++ ){
               
            switch ( buchstaben.length){
                   
            case 'A': case 'a':
                a++;
                break;               
            case 'E': case 'e':
                e++;
                break;
            case 'I': case 'i':
                i++;
                break;
            case 'O': case 'o':
                o++;
                break;
            case 'U': case 'u':
                u++;
                break;
            default:
                System.err.println("Unbekannte Nukleinblasen " + buchstaben.length);
                break loop;
                    }
                }
                System.out.printf(" Anzahl: A = %d, E = %d, I = %d, O = %d, U = %d%n", a, e, i, o, u);
            }

        }

Was habe ich falsch gemacht oder was habe ich nicht bedacht?
 

Robat

Top Contributor
Folgendes:

for ( int j = 0; j < buchstaben.length; j++ ){

switch ( buchstaben.length){
....
}
System.out.printf(" Anzahl: A = %d, E = %d, I = %d, O = %d, U = %d%n", a, e, i, o, u);
}


Du hast ein Array mit Strings. (also deinen Wörtern).
Dieses Array gehst du mit deiner for-Schleife durch.
Jetzt brauchst du aber noch eine for-Schleife, die bei jedem Wort jeden einzelnen Buchstaben abcheckt.

Kurz gesagt: dir fehlt eine for-Schleife :)
 

VfL_Freak

Top Contributor
Moin,

Leider kriege ich irgendwie gar nichts dabei raus, also nichts richtiges.
das ist KEINE Fehlerbeschreibung!

Was mir aber so auf die Schnelle auffiel:
Java:
switch ( buchstaben.length)
{
    case 'A': case 'a':
       a++;
       break;            
    case 'E': case 'e':
       e++;
       break;
// .....
Du switcht über die Länge Deines Array !!
Da sind Cases mit char gaaaanz ungünstig :D

Außerdem macht es sowieso nicht wirklich Sinn, über die Länge zu switchen, oder??

Gruß Klaus
 

Jinchuuriki

Mitglied
Java:
public class aufgabe1 {
   
    public static void main(String[] args){
        String [] bezeichnung = {
                "Mehrkornbrot", "Brötchen", "Kissinger", "\nHörnchen",
                "Brot", "Semmel", "\nWeck", "Wohnschnecke", "Baguette", "\nKipf",
                "Eierlikör-Sahnetorte","Roggenmischbrot"};
       
        //StringArray wird ausgegeben und die Anzahl der Buchsten wird berechnet   
        for(String b : bezeichnung){
            if(b.length() <= 7)
                System.out.println(b + '\t'+'\t'+'\t' + b.length());
            else if(b.length() >= 16)
                System.out.println(b + '\t' + b.length());
            else
            System.out.println(b + '\t'+'\t' + b.length());
       
        //Anzahl der Selbstlaute
        int a = 0, e = 0, i = 0, o = 0, u = 0;  
       
        //Anzahl der Selbstlaute soll ermittelt werden
        for ( int j = 0; j < b.length(); j++ ){
               
            switch (b.charAt(j)){
                   
            case 'A': case 'a':
                a++;
                break;               
            case 'E': case 'e':
                e++;
                break;
            case 'I': case 'i':
                i++;
                break;
            case 'O': case 'o':
                o++;
                break;
            case 'U': case 'u':
                u++;
                break;
            default:
               
                }
            }
        System.out.printf(" Anzahl: A = %d, E = %d, I = %d, O = %d, U = %d%n", a, e, i, o, u);
        }
       
    }

}

Soweit habe ich mich nun durchgeschlagen. Mir wird jetzt unter jeder Bezeichnung mi Array die Anzahl der Selbstlaute ausgegeben
 

Robat

Top Contributor
Vielleicht noch ein was meinerseits:

die 2 cases statements pro char sind (mMn) unschön.
Arbeite lieber mit toUpperCase bzw toLowerCase (auf deinen String angewandt) und prüf nur ein Fall :)
 

Neue Themen


Oben