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);
        }
    }

}
 
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)"
 
Sorry hab zu schnell auf Enter gedrückt.
Es muss natürlich a.length() sein. Bei Strings ist es ja eine Methode 😉
 
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.
 
Danke für die Hilfe 😀 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?
 
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 🙂
 
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 😀

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

Gruß Klaus
 
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
 
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 🙂
 

Zurück
Oben