2016-02-26 78 views
-2

在制定有關計算每個字母數量的程序(例如input-abc/output-a:1,b:1,c:1,d:0,...,z:0 )我有個問題。我不知道爲什麼if子句不起作用... 這是我的代碼。Java計算字母數

import java.util.Scanner; 


public class Prac05 { 

    public static void main(String[] args) { 
     Scanner sc = new Scanner(System.in); 
     String a = sc.nextLine(); 
     String[] b = a.split(""); 


     if (a.length() <= 100) { 
      for (int i = 0; i < b.length; i++) { 
       for (int j = 'a'; j <= 'z'; j++) { 
        if(b[i].equals((char) j)) { 
         System.out.println("1"); 
        } 
       } 
      } 
     } 
    } 

} 

我應該打印出「1」,但是因爲如果子句不屬實,沒有任何東西輸出...

+4

'b [i]'是一個'String','(char)j'被裝箱到'Character'。字符串和字符永遠不可能相同。 – Tunaki

+0

你應該可以用一個循環和一個if語句來做到這一點,只需使用'a'即可。 –

回答

2

你是一個String對象比作Character對象,這不等於彼此因爲他們不同的類型。

一個簡單的解決方案,這也將導致更高效,更優雅的代碼是字符串中使用String.charAt(),而不是原來的字符串分割爲很多小String的對象,並反覆從0a.length每個字符。