Java 我的程序不会计算元音
我有一个家庭作业,需要计算字符串中的元音。我的程序正在运行,但不会忽略辅音和空格。代码中有我遗漏的东西吗Java 我的程序不会计算元音,java,Java,我有一个家庭作业,需要计算字符串中的元音。我的程序正在运行,但不会忽略辅音和空格。代码中有我遗漏的东西吗 static void main(String[] args) { // TODO Auto-generated method stub boolean stopProgram = false; while(!stopProgram == true) { System.out.println("Enter a Word or \"q\" to end
static void main(String[] args) {
// TODO Auto-generated method stub
boolean stopProgram = false;
while(!stopProgram == true) {
System.out.println("Enter a Word or \"q\" to end the program: "); // prompt the user for input
Scanner wordScanner = new Scanner(System.in);
String word = wordScanner.nextLine();
if(!word.equals("q")) {
String vowels[] = {"a","e","i","o","u","y","A","E","I","O","U","Y"}; //define upper and lower case vowels
int count = 0;
for(int i = 0; i < word.length(); i++) {
if(String.valueOf(word.charAt(i)).equals(vowels[0]) ||
String.valueOf(word.charAt(i)).equals(vowels[1]));
String.valueOf(word.charAt(i)).equals(vowels[2]);
String.valueOf(word.charAt(i)).equals(vowels[3]);
String.valueOf(word.charAt(i)).equals(vowels[4]);
String.valueOf(word.charAt(i)).equals(vowels[5]);
String.valueOf(word.charAt(i)).equals(vowels[6]);
String.valueOf(word.charAt(i)).equals(vowels[7]);
String.valueOf(word.charAt(i)).equals(vowels[8]);
String.valueOf(word.charAt(i)).equals(vowels[9]);
String.valueOf(word.charAt(i)).equals(vowels[10]);
String.valueOf(word.charAt(i)).equals(vowels[11]);
count++;
}
System.out.println(("The Vowel Count is: ") + count);
}
}
}
static void main(字符串[]args){
//TODO自动生成的方法存根
布尔程序=假;
而(!stopProgram==true){
System.out.println(“输入一个单词或\“q\”结束程序:”);//提示用户输入
Scanner wordScanner=新扫描仪(System.in);
String word=wordScanner.nextLine();
如果(!word.equals(“q”)){
字符串元音[]={a”,“e”,“i”,“o”,“u”,“y”,“a”,“e”,“i”,“o”,“u”,“y”};//定义大写和小写元音
整数计数=0;
for(int i=0;i
}这是您的if声明:
if(String.valueOf(word.charAt(i)).equals(vowels[0]) ||
String.valueOf(word.charAt(i)).equals(vowels[1]));
通过中断if语句代码>在最后
之后,有很多语句(其结果被忽略)
不再是if语句的一部分
然后,每次迭代都会增加计数-不管是否,它都会被所说的中断代码>首先,你应该让你的代码更简洁:在while之外创建元音列表,这样你就不会在每次迭代时都创建元音列表,然后使用双for循环来运行元音选项卡:
static void main(String[] args) {
// TODO Auto-generated method stub
boolean stopProgram = false;
String vowels[] = {"a","e","i","o","u","y","A","E","I","O","U","Y"}; //define upper and lower case vowels
while(!stopProgram == true) {
System.out.println("Enter a Word or \"q\" to end the program: "); // prompt the user for input
Scanner wordScanner = new Scanner(System.in);
String word = wordScanner.nextLine();
if(!word.equals("q")) {
int count = 0;
for(int i = 0; i < word.length(); i++) {
for(int j = 0; j < 12; ++j){
if(String.valueOf(word.charAt(i)).equals(vowels[j]){
++count;
break;
}
}
}
System.out.println(("The Vowel Count is: ") + count);
}
}
}
static void main(字符串[]args){
//TODO自动生成的方法存根
布尔程序=假;
字符串元音[]={a”,“e”,“i”,“o”,“u”,“y”,“a”,“e”,“i”,“o”,“u”,“y”};//定义大写和小写元音
而(!stopProgram==true){
System.out.println(“输入一个单词或\“q\”结束程序:”);//提示用户输入
Scanner wordScanner=新扫描仪(System.in);
String word=wordScanner.nextLine();
如果(!word.equals(“q”)){
整数计数=0;
for(int i=0;i
您正在用分号
而不是或|
分隔您的if
条件。请检查if
的格式,以确保不同的条件正确分隔,并且条件正确封闭(并且在关闭后没有分号)。此外,您可以使用嵌套的for循环遍历元音数组,使其更具可读性:;虽然感觉像是一个重复,但您的代码本身也存在问题,值得自行解决。双循环不是必需的,使用常量在元音数组上循环也是非常糟糕的形式。我没有说这很糟糕,但是,避免同一函数的11次调用时的代码重复总是比较干净的。通过这样做,它还可以解决@Nathan的问题:)(因为“| |”不再有用了)。不,你误解了我的意思。假设我决定去掉Y作为元音。您认为您的代码会发生什么情况?您是对的,最好使用元音。length()来代替
static void main(String[] args) {
// TODO Auto-generated method stub
boolean stopProgram = false;
String vowels[] = {"a","e","i","o","u","y","A","E","I","O","U","Y"}; //define upper and lower case vowels
while(!stopProgram == true) {
System.out.println("Enter a Word or \"q\" to end the program: "); // prompt the user for input
Scanner wordScanner = new Scanner(System.in);
String word = wordScanner.nextLine();
if(!word.equals("q")) {
int count = 0;
for(int i = 0; i < word.length(); i++) {
for(int j = 0; j < 12; ++j){
if(String.valueOf(word.charAt(i)).equals(vowels[j]){
++count;
break;
}
}
}
System.out.println(("The Vowel Count is: ") + count);
}
}
}