Ich versuche, ein einfaches Programm zu schreiben, das die Anzahl der Vokale, Konsonanten und Leerzeichen in einer Zeichenfolge zählt, die Benutzer eingegeben wird. Ich habe ein Problem mit meinen Anweisungen while loop und if. Es zählt alles als Raum statt als Vokal oder Konsonant. Bitte lassen Sie mich wissen, wenn Sie irgendwelche Vorschläge haben! :)String zu Char Problem
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import javax.swing.JOptionPane;
public class VowelCounter {
private static final Set<String>
vowels = new HashSet<>
(Arrays.asList("a","e","i","o","u","y"));
private static final Set<String>
cons = new HashSet<>
(Arrays.asList("b","c","d","f","g","h","j","k","l","m","n","p","q","r","s","t","v","w","x","z"));
public static void main(String[] args) {
// ---------------------------------------------- VARIABLE DECLARATIONS
int vnum = 0;
int snum = 0;
int cnum = 0;
int i = 0;
// -------------------------------------------------------------- INPUT
String input = JOptionPane.showInputDialog
("Enter name (like your university)");
// --------------------------------------------------------- PROCESSING
char result = input.charAt(i);
do{
if (vowels.contains(result))
vnum++;
if (cons.contains(result))
cnum++;
if (!input.matches(("[a-zA-Z]+")))
snum++;
i++;
}while (i < input.length());
System.out.println("There are " + vnum + " vowels, " + cnum + " consonants, and " + snum + "spaces");
ich mit ihm nicht allzu vertraut bin, aber Ihr 'regex' muss falsch sein. Warum nicht einfach 'if (input.equals (" "))' –
Sie verwenden nur das erste Zeichen der Zeichenkette: move 'char result = input.charAt (i);' innerhalb des Zyklus. –
Ihr Test für "Nicht-Buchstaben" ist falsch: Es wird auf den gesamten Eingang angewendet und da es "+" ist, wird es so viele wie möglich essen. –