2013-11-09 3 views
0

Я хочу получить частоту всех 128 знаков (ASCII) с простейшим кодом. Нет импорта. Я пишу в Java (Eclipse), начиная от, как это:очень простая частота знаков

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

, то я хочу, чтобы вычислить частоту каждого знака с петлей (предпочтительно для цикла). Я знаю, как это сделать для определенного знака, например. знак «а», который 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 [] р = новый ИНТ р [1,2,3] - только для строки (или char?)) присваивает каждому индексу его число, а затем пусть цикл выписывает все знаковые частоты. Все это должно выполняться только с помощью циклов и команд: .length, charAt().

+2

Подсказка ... 'int [] frequency = new int [128];' – pobrelkey

+0

Почему бы не отличить '.charAt()' от '(int)'? –

ответ

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]++; 
} 
0

(в ответ на user2974951 в "ответ")

Это строковое представление массива. Попробуйте выполнить печать с петлей вместо:

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

Вы также можете попробовать System.out.println(Arrays.toString(frequencies)); но это может выглядеть немного некрасиво, учитывая большое количество ASCII символов, которые вы рассматриваете.

Смежные вопросы