2015-08-08 40 views
1

我的目標是計算輔音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. 我的程序中是否有任何錯誤?如果是這樣,我要求你建議一個更好的方法來做到這一點,或一種方法來糾正上述代碼。

+5

解決這個問題,代碼將起作用:'&& a =='o''應該是&& a!='o''。我正在投票結束作爲一個錯字。考慮刪除問題,如果這可以解決您的問題。 – dasblinkenlight

回答

0

有兩件事情你的代碼錯誤:

  1. 您的元音「O」檢查時,有一個錯字。而不是a == 'o',它應該是a != 'o'
  2. 即使您解決此問題,您的檢查僅考慮LOWER CASE元音,空格字符和數字。如果被檢查的字符不是這些中的任何字符,那麼它將被算作輔音。包括UPPER CASE元音,特殊字符(!@#$ etc ...),其他空格字符('\ t')和標點符號。

的修正可能是這樣的:

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

一旦你達到這一點,你可以看看的「改善」的編碼方式。

0

你有一個意外的檢查,目前的字符'o'a=='o'),而不是檢查它a != 'o')。

解決這個問題,你應該沒問題。

順便說一下,請注意,Java中的main方法的正確簽名是public static void main(String[] args)

+0

可能的重複:http://stackoverflow.com/questions/25262270/how-to-count-the-number-of-consonants-in-a-string-in-java。請通過這個鏈接,你會得到最好的解決方案。謝謝 –

+0

@Mureinik這是我使用的替代方案。但它的工作原理是一樣的。 – ineedhelpinlogic