Vokale aus String zählen

Status
Nicht offen für weitere Antworten.

wusel81

Mitglied
Hallo wieder mal was schönes... Hab es eigentlich schon soweit fertig. muss nur noch verfeinert werden...
Habe mir den unteren Teil jedoch zusammengesucht und versteh es noch nicht ganz. (siehe Comment)

Code:
import vfh.prog1.bib.Konsole;

public class Vokale{
  public static void main(String[] args){

	  String text;
	  String anzahl;
	  byte[] eingabe = new byte[200];
	  int[] anzahleingabe = new int[26];
	  int i;

	  System.out.println("Geben Sie bitte eine Text ein:");
	  System.out.println("");

// Text wird über die Konsole eingegeben
	  text = Konsole.getInputString();
	  System.out.println("");

// Eingegebener Text wird wieder ausgegeben
    System.out.println("Die Ausgaben enthaelt die Vokale x mal:");
    System.out.println("---------------------------------------");
    

// Text in Bytes umwandeln
eingabe = text.getBytes();


for (i = 0; i < eingabe.length; i++)
            if (eingabe[i]>90) eingabe[i]-=32;         // Alles nach Großbuchstaben umwandeln
            	                                                     // Versteh ich nicht ganz...


for (i = 0; i < eingabe.length; i++)
            anzahleingabe[(eingabe[i]-65)]++;              // und jetzt zählen ;-) Wieso 65 ???

for (i = 0; i < 26; i++)
            System.out.println((char) (i+65) + " \t*\t " + anzahleingabe[i]);       // Ergebnis ausgeben



}


}

Ich brauch das ganze jetzt so,
das er nur die Vokale a,e,i,o,u ausgibt und nicht komplette das ganze Alphabet.
 

hugo

Bekanntes Mitglied
Code:
for (i = 0; i < eingabe.length; i++)
            if (eingabe[i]>90) eingabe[i]-=32;         // Alles nach Großbuchstaben umwandeln
                                                                    // Versteh ich nicht ganz...
Die Buchstaben werden als ASCII Zeichen gepsichert dabei liegt das kleine a 32 hinter dem großen A, damit werden also alle Werte für Großbuchstaben herausgenommen
Code:
for (i = 0; i < eingabe.length; i++)
            anzahleingabe[(eingabe[i]-65)]++;              // und jetzt zählen ;-) Wieso 65 ???
Dadurch, dass die Zeichen bei 65 beginnen, werden alle Zeichen um 65 erniedrigt um A auf die Stelle 0 zu bringen.

In der letzten Zeile werden dann nur noch die Häufigkeiten der einzelnen Buchstaben ausgegeben. Wenn du also wissen willst, wie of du ein A drin hast, musst du nur die anzahleingabe[0] ausgeben lassen. Also mal schauen, an welcher Stelle im Alphabet die Vokale stehen und dann immer -1 damit du die Stelle im Feld findest.
 

wusel81

Mitglied
Also ich habs jetzt so gelöst...
Code:
// Ergebnis ausgeben
for (i = 0; i==0; i++)
            System.out.println((char) (i+65) + " \t*\t " + anzahleingabe[i]);

for (i = 4; i==4; i++)
            System.out.println((char) (i+65) + " \t*\t " + anzahleingabe[i]);

for (i = 8; i==8; i++)
            System.out.println((char) (i+65) + " \t*\t " + anzahleingabe[i]);

for (i = 14; i==14; i++)
            System.out.println((char) (i+65) + " \t*\t " + anzahleingabe[i]);

for (i = 20; i==20; i++)
            System.out.println((char) (i+65) + " \t*\t " + anzahleingabe[i]);

Völlig umständlich wie ich finde... wie krieg ichs mit ner switch case anweisung hin ?

Außerdem muckt er rum wenn leerzeichen im eingegebenem text sind...
 
G

Guest

Gast
Hi,
also allgemein könntest du ja ne methode schreiben, welche angibt ob das zeichen ein vokal - ungefähr so:

Code:
//wir wandeln in kleinbuchstabe um, um weitere vergleiche zu sparen...
public boolean is_vokal(char ch)
{
ch = Character.toLowerCase();

return (ch=='e') || (ch=='a') || (ch=='i') || (ch == 'o') || (ch == 'u');
}

Um zu zählen wie wieviele Vokale vorkommen einfach ne int-variable als counter benutzen und je nach rückgabewert von is_vokal() inkrementieren. wenn du noch wissen willst wie oft ein entsprechender vokal vorkam, kannst ja ein array anlegen, welches entsprechend für jeden vokal inkrementiert...

hab jetzt gerad leider nicht viel zeit um das ganze in deinen source einzubauen,hoffe ich konnte dir trotzdem helfen.

btw. wenn 65 etc. irgendwo vorkommt:

65 = a


greets
mic_checker[/code]
 

mic_checker

Top Contributor
wusel81 hat gesagt.:
Also ich habs jetzt so gelöst...
Code:
// Ergebnis ausgeben
for (i = 0; i==0; i++)
            System.out.println((char) (i+65) + " \t*\t " + anzahleingabe[i]);

for (i = 4; i==4; i++)
            System.out.println((char) (i+65) + " \t*\t " + anzahleingabe[i]);

for (i = 8; i==8; i++)
            System.out.println((char) (i+65) + " \t*\t " + anzahleingabe[i]);

for (i = 14; i==14; i++)
            System.out.println((char) (i+65) + " \t*\t " + anzahleingabe[i]);

for (i = 20; i==20; i++)
            System.out.println((char) (i+65) + " \t*\t " + anzahleingabe[i]);

Völlig umständlich wie ich finde... wie krieg ichs mit ner switch case anweisung hin ?

Außerdem muckt er rum wenn leerzeichen im eingegebenem text sind...

Also tatsächlich ist die Anwendung einer for-Schleife in diesem Beispiel umständlich.

Allgemein kannst ja mit switch für solche fälle besser operieren:

Code:
switch(i)
{
case 0: //Mache was für i == 0
break;
case 4: //Mache was für i == 4
break;
case 8: //Mache was für i == 8
break;
case 14: //....
break;
case 20: //...
break;
default: //ansonsten
break;
}

Oder wenn du die Fälle i == 0, i == 4 .... zusammen abhandeln willst:

Code:
switch(i)
{
case 0:
case 4:
case 8:
case 14:
case 20: //mach was für diese fälle
break;
default: //ansonsten
break;
}


greets
mic_checker
 

wusel81

Mitglied
Ich peils einfach nich...

Code:
switch(i)
{
case 0: 	System.out.println((char) (i+65) + " \t*\t " + anzahleingabe[i]);
case 4: 	System.out.println((char) (i+65) + " \t*\t " + anzahleingabe[i]);
case 8: 	System.out.println((char) (i+65) + " \t*\t " + anzahleingabe[i]);
case 14:	System.out.println((char) (i+65) + " \t*\t " + anzahleingabe[i]);
case 20: 	System.out.println((char) (i+65) + " \t*\t " + anzahleingabe[i]);
break;
}

So gehts nicht... anders weiß ich irgendwie nich... bin ich echt zu blöd zu...
das problem mit den leerzeichen wäre damit doch auch nicht gelöst oder ?
 

mic_checker

Top Contributor
Zuerst einmal musst du nach jedem case ein break setzen, ansonsten läuft er bis zum ende der switch anweisung durch (außer dieses verhalten ist gewollt). außerdem war das nur ein allgemeines beispiel für switch.

also, erstmal ob ich die frage richtig verstanden hab. du liest einen text ein, der vom user eingegeben wird. danach willst du so was in der art ausgeben:

a = 10 mal
e = 32 mal
i = 21 mal
o = 11 mal
u = 13 mal

Oder ?

greets
mic_checker
 

mic_checker

Top Contributor
Hi,
also ich hab mal gerade ganz schnell nen source aufgesetzt, ist nicht sehr elegant...aber müsste so eigentlich funktionieren....

Code:
//In Eingabe habe ich Methoden zum Einlesen diverser Dinge, wie Strings etc.
import Eingabe.*;

public class CountVokal
{
	public static void main(String[] args)
	{
		String str = TEingabe.readStr();
		char ch;
		
		/*
		* count[0] = a
		* count[1] = e
		* count[2] = i
		* count[3] = o
		* count[4] = u
		*/
		int[] count = new int[5];
		
		for(int i = 0;i < str.length();i++)
		{
			ch = str.charAt(i);
			
			if(ch == 'a' || ch == 'A')
				count[0]++;
			else if(ch == 'e' || ch == 'E')
				count[1]++;
			else if(ch == 'i' || ch == 'I')
				count[2]++;
			else if(ch == 'o' || ch == 'O')
				count[3]++;
			else if(ch == 'u' ||ch == 'U')
				count[4]++;
		}
		
		System.out.println("a = "+count[0]+" mal");
		System.out.println("e = "+count[1]+" mal");
		System.out.println("i = "+count[2]+" mal");
		System.out.println("o = "+count[3]+" mal");
		System.out.println("u = "+count[4]+" mal");
	}
}

wie gesagt, ist ganz schnell gemacht, hoffe es funzt, ansonsten -> post

greets
mic_checker
 

mic_checker

Top Contributor
kein problem.

du kannst ja mal selber probieren das ganze noch etwas umzuprogrammieren, so dass du ne switch anweisung verwenden kannst....ist nicht allzu schwer.

greets
mic_checker
 

wusel81

Mitglied
Ja erstmal mach ich mich noch an die andere Aufgabe... aber da werd ich denk ich nochn Thread zu aufmachen...

|| Das bedeutet ja nur das er z.B. ch == 'a' und ch == 'A' gleichsetzt richtig ? (Oder is das || nur zum trennen da , konnte es nich finden)
 

L-ectron-X

Gesperrter Benutzer
So wie es ein logisches UND gibt (&&) gibt es in Java ein logisches ODER (||).
Beim logischen UND müssen alle Bedingungen zu true ausgewertet werden. Beim logischen ODER genügt eine Auswertung zu true. Also: entweder dies ODER das ODER jenes ODER ...
 

mic_checker

Top Contributor
habs eben mal schnell mit switch umgesetzt und auch sonst etwas umgeschrieben, ist jetzt etwas kürzer..aber probier ruhig erstmal selber dran rum , denn nur so lernst du es ;)


greets
mic_checker
 

Jaraz

Bekanntes Mitglied
Hi,

ich würde es so machen.

Code:
	public static void main(String[] args) {
		int[] a = new int[32];
		byte [] c = "dies ist ein Test Text in dem Oft Vokale vorkommen Ofen Ufo".getBytes();
		for (int i = 0; i < c.length; i++) {
			a[(c[i]%32)]++;
		}
		System.out.println("a: "+a[1]+" e: "+a[5]+" i: "+a[9]+" o: "+a[15]+" u: "+a[21]);
	}

Gruß Jaraz
 

schrobi

Aktives Mitglied
Hallo liebe Leute.

Ich wollte keinen neuen Thread aufmachen da dieser hier mein Problem schon ganz gut beschreibt.
Habe auch die Aufgabe aus einer Texteingabe die Vokale zu zählen.
Mein Programm sieht folgendermaßen aus:

Testklasse:
Java:
import java.io.*;

public class VokaleTester {

    public static void main(String[] args) {
        Vokale test = new Vokale();
        test.muh();
    }
}

Hauptklasse:
Java:
import java.io.*;

public class Vokale {
	
	//Eingabe des Users
	String input;
	//Integer zum erfassen der laenge des Strings.
    int int02;
    //Array zum zaehlen der Vokale. 0=a, 1=e, 2=i, 3=o, 4=u
    int[] vocal = {0, 1, 2, 3, 4};
    
    /**
     *Methode zum einlesen der Usereingabe.
     */
    private void readIn() {
        BufferedReader br = new BufferedReader(
                    new InputStreamReader(System.in));
        try {            
            input = br.readLine();
        } catch (IOException e) {
        }
    }
	
	
	public final void muh() {
		System.out.println("Bitte einen Text eingeben.");
		readIn();
		int02 = input.length();
		
		for (int i = 0; i< int02; i++) {
			
			switch (input.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!");
	}

}

Bekomme momentan als Ausgabe total falsche Werte bei den gezählten Vokalen und denk mal, dass es an dem switch-case-Block liegt. Aber habe keine Ahnung wie ich es ändern muss.
Hoffe ihr könnt mir hier weiterhelfen.

Schrobi
 
R

Roar

Gast
ne, das liegt daran dass du schon vorher reinschreibst wieviele vokale da sind:
vocal = {0, 1, 2, 3, 4};
=>
vocal = new int[5];
?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P9cman Vokale in einem String überprüfen mittels Rekursion Java Basics - Anfänger-Themen 8
N Aus einem String die Anzahl der Vokale auslesen Java Basics - Anfänger-Themen 40
P vokale konsonanten ziffern satzzeichen aus string lesen. hab kiene ahnung Java Basics - Anfänger-Themen 10
H Erste Schritte String Vokale entfernen Java Basics - Anfänger-Themen 11
R Vokale aus String entfernen Java Basics - Anfänger-Themen 11
A Vokale im String ersetzen Java Basics - Anfänger-Themen 12
V Erste Schritte Vokale im Satz ersetzen Java Basics - Anfänger-Themen 20
O Methode um Vokale zu entfernen UNSCHOEN! Java Basics - Anfänger-Themen 8
D Vokale auslesen in Satz Java Basics - Anfänger-Themen 7
S Vokale Java Basics - Anfänger-Themen 11
S Vokale vorhanden?? Java Basics - Anfänger-Themen 2
S Vokale am Ende von Wörtern löschen Java Basics - Anfänger-Themen 7
J Vokale ersetzen Java Basics - Anfänger-Themen 7
C Löschen der Vokale Java Basics - Anfänger-Themen 20
A Satzeingabe - Vokale zählen Java Basics - Anfänger-Themen 5
T Rekursiv Vokale zählen Java Basics - Anfänger-Themen 19
T Wie ersetze ich Vokale? Java Basics - Anfänger-Themen 4
krgewb String mit Datumsangabe in Long umwandeln Java Basics - Anfänger-Themen 2
D String Groß/Kleinschreibung Ignorieren Java Basics - Anfänger-Themen 4
D Map<String, Integer> sortieren und der reinfolge nach die Glieder abfragen Java Basics - Anfänger-Themen 3
J Ähnlichen String in Liste finden Java Basics - Anfänger-Themen 6
Kartoffel_1 String transformation Java Basics - Anfänger-Themen 7
H String-Operation replace() - Zeichenkette verdoppeln Java Basics - Anfänger-Themen 2
K String analysieren Java Basics - Anfänger-Themen 27
Beowend String zu Date parsen Java Basics - Anfänger-Themen 1
Beowend String auf Satzzeichen überprüfen? Java Basics - Anfänger-Themen 6
H Liste nach String-Länge sortieren Java Basics - Anfänger-Themen 1
String in ArrayList umwandeln Java Basics - Anfänger-Themen 1
I Sass Compiler und String erhalten? Java Basics - Anfänger-Themen 7
Avalon String in Double bzw. Währung konvertieren Java Basics - Anfänger-Themen 6
T Methode akzeptiert String nicht Java Basics - Anfänger-Themen 18
F Arraylist<String>Ein Wort pro Zeile Java Basics - Anfänger-Themen 6
J Schlüsselworte Prüfen, ob ein bestimmtes, ganzes Wort in einem String enthalten ist. Java Basics - Anfänger-Themen 6
N String überprüfen Java Basics - Anfänger-Themen 3
E String zerlegen aus args Java Basics - Anfänger-Themen 1
M Long-Typ in String-Änderung führt zu keinem Ergebnis bei großer Zahl Java Basics - Anfänger-Themen 11
Ostkreuz String Exception Java Basics - Anfänger-Themen 8
W Items löschen aus String Array vom Custom Base Adapter Java Basics - Anfänger-Themen 2
MoxMorris Wie macht man String[] = String[] aus einer anderer Methode? Java Basics - Anfänger-Themen 18
J String Filter Java Basics - Anfänger-Themen 5
S String Array Buchstaben um einen gewissen Wert verschieben Java Basics - Anfänger-Themen 4
R Größter zusammenhängender Block gleicher Zeichen im String Java Basics - Anfänger-Themen 1
XWing Randomizer mit einem String Java Basics - Anfänger-Themen 2
D 2D Char Array into String Java Basics - Anfänger-Themen 2
H Cast von Float nach String klappt nicht Java Basics - Anfänger-Themen 12
I Zerlegen von String Java Basics - Anfänger-Themen 3
B Beliebiger String gegeben Suche Datum in String Java Basics - Anfänger-Themen 6
I String Java Basics - Anfänger-Themen 4
I API - zurückgegebener JSON String lesen und in Entity konvertieren Java Basics - Anfänger-Themen 2
H Zu langen String aufteilen - bequeme Methode? Java Basics - Anfänger-Themen 14
W String einer Textdatei in einzelne Stringobjekte pro Zeile aufteilen Java Basics - Anfänger-Themen 14
belana wie am besten 2D Array von String to Integer Java Basics - Anfänger-Themen 18
J Java To String Methode, Array mit For-Schleife Java Basics - Anfänger-Themen 2
M Kommandozeilenparamter als EINEN String werten Java Basics - Anfänger-Themen 5
M RandomAccessFile int und String gleichzeitig in einer Datei Java Basics - Anfänger-Themen 49
M Prüfen on eine Zahl im String enthalten ist Java Basics - Anfänger-Themen 3
Distanz zwischen zwei Zeichenfolgen in einem String bestimmen Java Basics - Anfänger-Themen 5
Substring in einem String finden Java Basics - Anfänger-Themen 13
BeginnerJava String mit vorgegebener Länge und Buchstaben erzeugen/ mit Leerstellen Java Basics - Anfänger-Themen 8
I Eindeutiger String mit maximaler Anzahl an Zeichen Java Basics - Anfänger-Themen 11
H Interface Wieso "List<String> list = new ArrayList<>[…]" Java Basics - Anfänger-Themen 4
JavaBeginner22 Integer in String umwandeln Java Basics - Anfänger-Themen 7
HolyFUT JSON String in Java Object schreiben - Anführungszeichen rauskriegen? Java Basics - Anfänger-Themen 17
Fodoboo131 RegEx- Umwandlung von String in ausführbares Objekt/ Befehl Java Basics - Anfänger-Themen 9
HolyFUT Input/Output Leerzeichen aus String entfernen - klappt nicht! Java Basics - Anfänger-Themen 13
viktor1 Methoden Methode schreiben static void readText (String filename) {...} zu WordHistogramSample.java Java Basics - Anfänger-Themen 13
ravenz Schleife mit for über String Array „zahlen“und prüfen ob Wert „a“ oder „b“ oder „c“ entspricht (mittels || ) Java Basics - Anfänger-Themen 4
G Position einer unbekannten 3-stelligen-Zahl in einem String finden Java Basics - Anfänger-Themen 15
T String Array Fehler beim Index Java Basics - Anfänger-Themen 3
H Erste Schritte Nach einer Zahl n soll n Mal der String untereinander ausgegeben werden Java Basics - Anfänger-Themen 3
X Datentypen String.equals funktioniert nicht Java Basics - Anfänger-Themen 5
Alen123 String wiederholen mit Schleifen Java Basics - Anfänger-Themen 1
A String split funktioniert nicht, wenn mehr als 1 Ziffer vor dem Zeichen steht nach dem er trennen soll? Java Basics - Anfänger-Themen 4
T String splitten Java Basics - Anfänger-Themen 3
sserio Schwimmen als Spiel. Problem mit to String/ generate a card Java Basics - Anfänger-Themen 4
J Datentypen String in File konvertieren funktioniert nicht Java Basics - Anfänger-Themen 4
T Platzhalter in String? Java Basics - Anfänger-Themen 14
M String mit Variable vergleichen Java Basics - Anfänger-Themen 9
I String Kombination erstellen anhand fortlaufender Zahl (Vertragsnummer) Java Basics - Anfänger-Themen 13
Fats Waller Compiler-Fehler Kann ich einen String und die Summe zweier Char Werte mittels der println Anweisung ausgeben Java Basics - Anfänger-Themen 4
M Wie kann eine Methode (string) eine andere Methode (void) mit zufälligen int-Werten aufrufen? Java Basics - Anfänger-Themen 4
schredder Strings und reguläre Ausdrücke - Methode mit return string.matches Java Basics - Anfänger-Themen 5
R Ein Multidimensionales String Array initialisieren und Deklarieren Java Basics - Anfänger-Themen 2
H String Repräsentation eines Rechtecks mit Instanz-Methode Java Basics - Anfänger-Themen 8
Dorfschmied Kartesisches Produkt von zwei Liste mit Hashmaps<String,String> erstellen Java Basics - Anfänger-Themen 4
S String mit Int input vergleichen Java Basics - Anfänger-Themen 5
C String/Char-API Java Basics - Anfänger-Themen 13
U Char zu einem String machen Java Basics - Anfänger-Themen 1
B Anzahl Nullen uns Einsen in String ermitteln Java Basics - Anfänger-Themen 3
T Leerzeichen im String entfernen Java Basics - Anfänger-Themen 6
Jose05 Nullpointerexception bei Umwandlung von String zu int Java Basics - Anfänger-Themen 2
O Ich habe einen String und soll mit matches schauen, ob ein Buchstabe zu einer geraden ANzahl im String vorkommt, wie soll das gehen? Java Basics - Anfänger-Themen 7
M String beim einlesen formatieren Java Basics - Anfänger-Themen 12
N null in String replacen Java Basics - Anfänger-Themen 16
R Compiler-Fehler JTable mit XML befüllen | The constructor JTable(Object[], String[]) is undefined Java Basics - Anfänger-Themen 10
M Eclipse kennt keine String Klasse mehr Java Basics - Anfänger-Themen 1
M Frage zur Methode split der Klasse String Java Basics - Anfänger-Themen 32
D String mit int multiplizieren? Java Basics - Anfänger-Themen 16
H Überprüfen ob String Array leer ist Java Basics - Anfänger-Themen 4
A Korrigierte <String> Liste zurückgeben Java Basics - Anfänger-Themen 22

Ähnliche Java Themen

Neue Themen


Oben