计算字符串中辅音的数量

时间:2015-08-08 10:12:08

标签: java string function bluej

我的目标是在字符串中计算辅音 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。 我的程序有错误吗?如果是这样,我请求您建议更好的方法来执行此操作,或者更正上述代码的方法。

2 个答案:

答案 0 :(得分:0)

您意外检查当前字符 'o'a=='o'),而不是检查是不是a != 'o')。

修正,你应该没事。

BTW,请注意Java中main方法的正确签名是public static void main(String[] args)

答案 1 :(得分:0)

您的代码有两个问题:

  1. 检查元音'o'时有错字。而不是a == 'o',它应该是a != 'o'
  2. 即使你解决了这个问题,你的支票也只会考虑LOWER CASE元音,空格字符和数字。如果被检查的角色不是这些中的任何一个,那么它将被视为辅音。这包括UPPER CASE元音,特殊字符(!@#$ etc ...),其他空格字符('\ t')和标点符号。
  3. 更正可能类似于:

    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);
    }
    

    一旦达到这一点,您就可以研究“改进”代码的方法。