Fehlermeldung : cannot invoke char(at) int on the primitive type int --- Anfänger

JavaNewbiee

Mitglied
Hi,
habe gerade mit Java angefangen und soll folgende Aufgabe Lösen:
Entwickeln Sie ein Programm, das in einer Zeichenkette nach der Anzahl der Vokalen A, E, I, O, U und Blanks zählt. Die Eingabe hat über die Tastatur zu erfolgen. Verwenden sie die for-Schleife und switch- / case-Anweisung.

Jetzt bekomme ich bei meinem Code allerdings in Zeile 22 die Fehlermeldung "cannot invoke char(at) int on the primitive type int" und weiß nicht warum.

Java:
import java.util.Scanner;
import java.io.*;


public class ParseStringApp {
	
	static int[] vocal = new int[5];
	int int02;
	
	public static void main(String[] args) {
		
		
		Scanner scan = new Scanner(System.in);
		System.out.println("Bitte beliebige Zeichenkette eingeben: ");
		String zeile = scan.nextLine();
	    
		
		int int02 = zeile.length();
		
		for (int i = 0; i<=int02; i++) {
		
			switch (int02.charAt(i)) {
				case 'a': vocal[0]++;
					break;
				case 'A': vocal[0]++;
					break;
				case 'e': vocal[1]++;
					break;
				case 'E': vocal[1]++;
					break;
				case 'i': vocal[2]++;
					break;
				case 'I': vocal[2]++;
					break;
				case 'o': vocal[3]++;
					break;
				case 'O': vocal[3]++;
					break;
				case 'u': vocal[4]++;
					break;
				case 'U': vocal[4]++;
					break;
					
			}
		}
 
		System.out.println("Laenge der Eingabe: " + int02);
		System.out.println("");
		System.out.println("a = " + vocal[0] + " mal!");
		System.out.println("e = " + vocal[1] + " mal!");
		System.out.println("i = " + vocal[2] + " mal!");
		System.out.println("o = " + vocal[3] + " mal!");
		System.out.println("u = " + vocal[4] + " mal!");

	}

}

Hoffe mir kann jemand helfen mfg JavaNewbiee
 
Zuletzt bearbeitet:
Wie wäre es, wenn du auf die chars des Strings zugreifen würdest und nicht auf die Länge des Strings?
Sowas wie: zeile.charAt(...);

Des Weiteren beginnt die Nummerierung von Arrays bei 0 und laufen bis Länge-1, das heißt du solltest dir deine Schleifenbedingung nochmal ansehen.

Du kannst auch noch deinen Code kürzen, indem du Duplikate rauswirst. Bei Switch-Anweisungen kannst du dir den Fall-Through zu nutze machen:

Java:
switch(zeile.charAt(...)) {
  case 'a':
  case 'A':
    vocal[...]++;
    break;
  //...
}
 
Also das mit switch(zeile.charAt(...)) { hat funktioniert vielen dank dafür 🙂 .

Ich verstehe allerding nicht genau was an meiner Schleifenbedingung nicht stimmt ...
 
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 22
at java.lang.String.charAt(Unknown Source)
at ParseStringApp.main(ParseStringApp.java:22)

Das kommt als Fehlermeldung.
 

Neue Themen


Zurück
Oben