プログラムの一部に問題があります。
次のコードでは、アルファベットが 27 文字あります。
目的は、外側の の繰り返しごとにfor
の最後のn
文字を取得し、アルファベットのすべての文字について、 の最後の文字に文字を追加することによって得られる文字のtext_generated
出現回数をカウントすることです。次に、出現回数が最も多い文字を選択し、それを に追加します。私が得た結果は次のようなものです:text_formatted
n+1
n
text_generated
text_generated
***aaaaaaaaaaaaaaaaaaa
なぜ?
コード:
int index;
int[] occurrences = new int[27];
int count;
for(int a = 0; a < m; a++){ // m is the number of characters the user wants to add
for(int b = 0; b < 27; b++){
StringBuffer curr_word = new StringBuffer(text_generated.substring(text_generated.length()-n, text_generated.length()));
count = 0;
for(int c = 0; c <= text_formatted.length() -n-1;c++){
if(text_formatted.substring(c,c+n+1).equals(curr_word.append(array[b])))
count += 1;
}
occurrences[b] = count;
}
index = 0;
for(int d = 1; d < 27; d++){
if(occurrences[d] > occurrences[index])
index = d;
}
text_generated = text_generated.append(array[index]);
}