2017-03-12 51 views
-3

在下面的代碼中,如果我使用90到122,程序不工作,但是如果我使用65到92,即使字符是UpperCase也可以工作。我必須打印一個字符串中的每個字母表的頻率

import java.util.Scanner; 
class rep 
{ 
    public static void main(String args[]){ 
     Scanner sc = new Scanner(System.in); 
     String s=sc.nextLine(); 
     s=s.toUpperCase(); 
     char b; 
     int i,a,c; 
     a=s.length(); 
     for(i=90;i<=122;i++){ 
      c=0; 
      for(int j=0;j<a;j++){ 
       if((char)i==s.charAt(j)){ 
        c+=1; 
       } 
      } 
      if(c>0) 
      System.out.println((char)i+"\t\t\t" +c); 
     } 

    } 
} 
+1

您的發佈代碼看起來是否格式正確?它不適用於我們,因此很難閱讀和理解,所以您首先需要解決這個問題。我們越容易理解你的代碼和你的問題,我們就可以給出更好的答案。 –

+1

請詳細說明該程序「無效」。 – Izruo

+0

大寫字母來自64-90,小寫字母來自97-122。 – kaetzacoatl

回答

0

90-122是小寫字母(97-122),65-92是大寫字母。你在你的代碼中有這樣一行:s = s.toUpperCase();它將整個字符串轉換爲大寫字母。這就是爲什麼它沒有檢測到小寫字母。

順便說一句。 Java約定說用第一個字母大寫來命名你的類。

+0

97我的錯誤錯誤.....如果我使用97到122,沒有打印,但如果我使用65到92,程序運行良好 –

+0

你似乎犯了與OP一樣的錯誤。 65-90是*大寫*,97-122是*小寫*。 – RealSkeptic

+0

是的,我錯了,我在想一件事,寫另一件事。該帖子已被編輯。 – hyperion385

相關問題