2017-07-20 58 views
1

我必須完成一個項目,執行以下操作: 編寫一個程序,提示用戶輸入一個字串,然後計數並顯示 字母中每個字母出現的次數字符串。 沒有必要區分大寫字母和小寫字母。錯誤的Java字符串項目

Letter A count = xx 
Letter B count = xx 

.... 
Letter Z count = xx 

我編輯它,所以它看起來像現在這樣:你的輸出應該 如下格式化。現在唯一的問題是在字母計數期間大寫字母被忽略,我不太確定問題是什麼。

public class Assignment9 { 

    public static void main(String[] sa) { 

     int letters [] = new int[ 26 ]; 
     String s; 
     char y; 

     for (int x = 0; x < letters.length; x++) 
     { 
      letters[x] = 0; 
     } 

     s = Input.getString("Type a phrase with characters only, please."); 
     s.toLowerCase(); 

     for (int x = 0; x < s.length(); x++) 
     { 
      y = s.charAt(x); 
      if (y >= 'a' && y <= 'z') 
      { 
       letters[ y - 'a' ]++; 
      } 

     } 

     for (y = 'a'; y <= 'z'; y++) 
     { 
      System.out.println("Letter " + y + " = " + letters[ y - 'a'] + " "); 
     } 

    } 

} 
+2

提示:您當前正在顯示計數循環*內所有字母*的計數。 –

+0

在計數部分完成後打印計數,在計算它們時打印值 – ja08prat

+0

[Java:如何計算字符串中char的出現次數?](https://stackoverflow.com/questions/275944/java-how-do-i-count-of-a-char-in-a-string) – hwdbc

回答

0

你應該先算的字母,然後顯示的結果,所以下面的循環應該是外循環,你通過輸入字符串迭代:

for (y = 'a'; y <= 'z'; y++) 
{ 
    System.out.println("Letter " + y + " = " + letters[ y - 'a'] + " "); 
} 
0

我對你的解決方案:

public static void main(String[] args) { 

    //Init your String 
    String str = "Your string here !"; 
    str = str.toLowerCase(); 

    //Create a table to store number of letters 
    int letters [] = new int[ 26 ]; 

    //For each char in your string 
    for(int i = 0; i < str.length(); i++){ 
     //Transphorm letter to is corect tab index 
     int charCode = (int)str.charAt(i)-97; 

     //Check if the char is a lettre 
     if(charCode >= 0 && charCode < 26){ 
      //Count the letter 
      letters[charCode]++; 
     } 
    } 

    //Display the result 
    for(int i = 0; i < 26; i ++){ 
     char letter = (char)(i+65); 
     System.out.println("Letter " + letter + " count = " + letters[i]); 
    } 

}