0

可能な限り単純なコードで 128 個すべての記号 (ASCII) の頻度を取得したいと考えています。インポートはありません。 私は次のように始めて、Java(Eclipse)で書いています:

public class Text {
public static void main (String[] args) {

次に、ループ(できればforループ)で各記号の頻度を計算したいと思います。特定の記号、たとえば記号 'a' は 97 に対してこれを行う方法を知っています。

int a = 0;
for (int i = 0; i < s.length(); i++) {             // s is a String
    if (s.charAt(i) == 'a') {
        a += 1;
    }
}
System.out.println("a: " + a);

すべての記号のテーブルを作成する必要があります (例: int[] p = new int p[1,2,3] - 文字列 (または char?) の場合のみ)。各インデックスにその番号を割り当ててから、ループに書き出させます。すべての符号周波数。これはすべて、ループとコマンドでのみ行う必要があります: .length、charAt()。

4

2 に答える 2

4

単に:

final String s = "Hello World!";
final int frequencies[] = new int[128];

for (int i = 0; i < s.length(); i++) {
    final int ascii = (int) s.charAt(i);
    frequencies[ascii]++;
}
于 2013-11-09T22:31:37.997 に答える
0

(user2974951 さんの「回答」に応えて)

それが配列の String 表現です。代わりにループで印刷してみてください:

for(int i = 0; i < frequencies.length; i++) {
    System.out.println(frequencies[i]);
}

試すこともできSystem.out.println(Arrays.toString(frequencies));ますが、検討している大量の ASCII 文字を考えると、少し見苦しく見えるかもしれません。

于 2013-11-10T08:55:13.393 に答える