# Silbenzähler



## KaffeeFan (2. Dez 2015)

Hey Leute,

habe mal wieder ein Problem, an dem ich gerade nicht weiterkomme...
Mein Programm soll später ein Wort einlesen, die Silben zählen und es mit Wörtern aus einem Array vergleichen und so eine Assonanz zu dem Wort finden.

Es hakt momentan daran, dass z.B. beim Wort "Haus" 2 Silben gezählt werden, da ja zwei Vokale drin sind, die aber eigentlich nur eine Silbe ergeben.

Hat jemand eine Idee, wie ich meinem Programm sagen kann, dass das bzw. auch "io" oder "ae" nur eine Silbe ist? Das Wort "Vegetarier" lassen wir da mal außen vor würde ich sagen 

Gruß
Luk


```
public static void main(String[] args)
  {

    Scanner scan = new Scanner(System.in);
    String wort = scan.nextLine();
    int laenge = wort.length();

  
    int zaehler;
    int zaehler1;
    int zaehler2;
    int zaehler3;
    int zaehler4;
    int zaehler5;
  
    String arr[] =
    {
      "Haus", "Dachdecker", "Torschuss", "Lukas"
    };
  
    int arr1[] =
    {
      zaehler=0, zaehler1=0, zaehler2=0, zaehler3=0, zaehler4=0, zaehler5=0
    };

    int abz = arr.length;
    int b = 0;

    for (int i = 0; i < laenge; i++)
    {
      char buchstabe = wort.charAt(b);
      String parse = String.valueOf(buchstabe);

      if ("a".equals(parse))
      {
        arr1[0]++;
      }
      if ("e".equals(parse))
      {
        arr1[0]++;
      }
      if ("i".equals(parse))
      {
        arr1[0]++;
      }
      if ("o".equals(parse))
      {
        arr1[0]++;
      }
      if ("u".equals(parse))
      {
        arr1[0]++;
      }

      b++;
    }
    System.out.println("Das Wort hat " + arr1[0] + " Silben.");

    int z = 0;
    b = 0;
    int y = 1;

    for (int i = 0; i < abz; i++)
    {
      for (int e = 0; e < arr[z].length(); e++)
      {
        char buchstabe = arr[z].charAt(b);
        String parse = String.valueOf(buchstabe);
        System.out.println("  " + buchstabe);
        if ("a".equals(parse))
        {
          arr1[y]++;
          System.out.println("a");
        }
        if ("e".equals(parse))
        {
          arr1[y]++;
          System.out.println("e");
        }
        if ("i".equals(parse))
        {
          arr1[y]++;
          System.out.println("i");
        }
        if ("o".equals(parse))
        {
          arr1[y]++;
          System.out.println("o");
        }
        if ("u".equals(parse))
        {
          arr1[y]++;
          System.out.println("u");
        }
        b++;
      }
      System.out.println(arr[z] + " hat " + arr1[y] + " Silben");
      z++;
      y++;
      b = 0;
    }

  }

}
```


----------



## VfL_Freak (2. Dez 2015)

Moin,

zunächst einmal: Du zählst keine _Silben_, sondern '_nur_' die *Vokale *..... 

Wenn Du nun wirklich "io" oder "ae" zählen willst, dann musst Du halt Deine Prüfungen von ein auf zwei Zeichen erweitern 

Gruß Klaus


----------



## KaffeeFan (2. Dez 2015)

VfL_Freak hat gesagt.:


> Moin,
> 
> zunächst einmal: Du zählst keine _Silben_, sondern '_nur_' die *Vokale *.....


Ja, das weiß ich, aber in den meisten Fällen ist die Silbenanzahl = die Vokalanzahl, aber ja, du hast Recht 

Hab es schon hinbekommen und auch etwas eleganter gelöst als oben, trotzdem danke für deine Antwort! 

Gruß
Luk


----------



## CSHW89 (2. Dez 2015)

Mal ein kleiner Wiki-Auszug zur Silbentrennung:
https://de.wikipedia.org/wiki/Worttrennung#Automatische_Silbentrennung


----------

