2016-12-04 63 views
-4

計數的出現在一個特定的字符串字母頻率後,我試圖將這些值存儲在陣列int。該陣列總共有26個值用於整個字母表。 int變量frequency被用作計數器來捕獲字符串中每個字母的頻率,但計數被錯誤計算。我究竟做錯了什麼?計數的字母的頻率在一個字符串

int frequency = 0; 
char character; 
alphaCounts = new int[26]; 

for (int i = 0; i < alphabet.length; i++) { 
    frequency = 0; 
    for (int j = 0; j < stringInput.length(); j++) { 
     character = stringInput.charAt(j); 
     if (character == alphabet[i]) { 
      frequency++; 
     } 
    } 

    System.out.println(alphabet[i] + "\t\t" + frequency); 

    // Populating alphaCounts array with the freq values 
    alphaCounts[i] = frequency; 
    i++; 
    System.out.print("\n" + "alphaCounts: " + alphaCounts[i]); 
} 
+4

什麼事* *是錯誤的? – GurV

+0

@GurwinderSingh我嘗試將頻率值分配給alphaCounts []的底部部分由於某種原因不起作用... – user3768997

+1

'does not work'是什麼意思?你得到一些錯誤?如果是這樣,什麼錯誤?粘貼一個堆棧。 – GurV

回答

0

您的代碼存在一些問題。雖然你的整體問題可能來自於你每次循環增加兩次i;一次在for循環本身,一次在靠近結尾的身體中。

另一個問題可能是你如何定義alphabet。你確定它包含ascii字符'a'到'z'的值嗎?你是否考慮大小寫?也沒有理由使用一個單獨的數組,您可以通過適當的調整直接脫離j的值。

+0

是的。但是,我怎麼能將值添加到int數組? – user3768997

+0

如果正確添加值的方式。我懷疑這是你的代碼的其餘部分導致計數爲0. – Iluvatar

+0

當我運行System.out.println(alphabet [i] +「\ t \ t」+頻率);如果該字母不出現在字符串中,我會以適當的頻率獲得所有字母表字母a-z或0。但是,當我嘗試將這些頻率插入到alphaCounts []中時,我插入了0. – user3768997

1

下面是一段代碼,找到字母的頻率

String input = "abcaaasdasdasd"; 
int freqarray[] = new int[26]; 
input = input.toUpperCase(); 
for(int i=0;i<input.length();i++) 
{ 
    freqarray[input.charAt(i)-'A']++; 
}