我的目标是在字符串中计算辅音 ONLY 的数量,这是我的代码:
import java.io.*;
/**
* Write a description of class Program46 here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Program46
{
public static void main()throws IOException
{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("Enter phrase: ");
String phrase=br.readLine();
int lth=phrase.length();
int ctr=0;
for(int i=0;i<=lth-1;i++)
{
char a=phrase.charAt(i);
boolean chk=Character.isDigit(a);
if(a!='a'&&a!='e'&&a!='i'&&a=='o'&&a!='u'&&a!=' '&& chk==false)
ctr++;
}
System.out.println("No. of consonents: "+ctr);
}
}
程序确实编译,没有显示语法错误。 但是,当我在void main()中执行它时, 无论我输入什么,它所计算的辅音数量总是0。 我的程序有错误吗?如果是这样,我请求您建议更好的方法来执行此操作,或者更正上述代码的方法。
答案 0 :(得分:0)
您意外检查当前字符是 'o'
(a=='o'
),而不是检查是不是 (a != 'o'
)。
修正,你应该没事。
BTW,请注意Java中main
方法的正确签名是public static void main(String[] args)
。
答案 1 :(得分:0)
您的代码有两个问题:
a == 'o'
,它应该是a != 'o'
更正可能类似于:
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Enter phrase: ");
String phrase = br.readLine();
int lth = phrase.length();
int ctr = 0;
for (int i = 0; i <= lth - 1; i++) {
char ch = phrase.charAt(i);
// Skip this character if it's not a letter
if (!Character.isLetter(ch)) {
continue;
}
if (ch != 'a' && ch != 'e' && ch != 'i' && ch != 'o' && ch != 'u' &&
ch != 'A' && ch != 'E' && ch != 'I' && ch != 'O' && ch != 'U' ) {
ctr++;
}
}
System.out.println("No. of consonents: " + ctr);
}
一旦达到这一点,您就可以研究“改进”代码的方法。