2013-12-13 29 views
1

這是我的代碼,它工作正常(我認爲),但如果我想輸入與其他字符如「。,*:;」的句子。那麼他們肯定會被算作輔音。試圖計數元音,輔音和空格,但忽略其他字符的

有沒有辦法縮短這個沒有輸入所有不是元音的字符?

另外,我知道我可以使用「IGNORECASE()」而不是鍵入出元音的所有資金版本,但實現之後,我打他們,我太固執的改變:d

public void compute() { 
    for (int i = 0; i < str.length(); i++) { 
     if (str.charAt(i) == 'a' || str.charAt(i) == 'e' || str.charAt(i) == 'i' || str.charAt(i) == 'o' || str.charAt(i) == 'u' || str.charAt(i) == 'A' 
       || str.charAt(i) == 'E' || str.charAt(i) == 'I' || str.charAt(i) == 'O' || str.charAt(i) == 'U') { 
      vowels++; 
     } else if (str.charAt(i) == ' ') { 
      spaces++; 
     } else { 
      cons++; 
     } 
    } 
} 

回答

2

你可以利用Character.isLetter方法檢查字符是否是有效字母或某個特殊字符。以下是javadoc說,對isLetter方法:

公共靜態布爾isLetter(焦CH)

確定指定字符是字母。一個字符被 認爲是一個字母,當其一般類別類型,由 Character.getType(CH)提供,是任何以下的:

  • UPPERCASE_LETTER
  • LOWERCASE_LETTER
  • TITLECASE_LETTER
  • MODIFIER_LETTER
  • OTHER_LETTER

並非所有的字母都有案例。許多字符都是字母,但既不是大寫字母也不是小寫字母,也不是大寫字母,也不是 。

+0

這看起來像..如果(str.charAt(i).Character.isLetter == true)??我從來沒有用過這種方法,這將是我的第一次猜測,雖然 – Adam

+0

@亞當不,它應該是︰Character.isLetter(str.charAt(i)) –

+0

真棒!這沒有把戲好,謝謝! – Adam

0

明顯的替代辦法是這樣的:

String vowels = "aeiou"; 

然後:

if (vowels.contains(str.substring(i,i+1)){ 
    vowels++; 
} 

你可以做套,當然,但有什麼意義呢?