Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Вывод некоторго количества произвольных символов


Автор: CuamckuyKot 17.2.2006, 18:50
Привет всем! Вот такая задача стоит передомной:
Заполнить случайным образом строку из 100 символов. Вычислить какой символ встречается чаще всего.

Вопрос такой - то что надо заполнять строку исходя из рандома, это понятно. Как символы вывести? Использовать кодовые таблицы какие-нибудь или ещё что?

Подскажите, пожалуйста.

Автор: Michael.de 17.2.2006, 19:17
CuamckuyKot:

1. чем собираешься заполнять (только буквы и цифры) ?
2. где собираешся выводить (консоль, апплет, GUI) ?

Полагаю byte [] подойдёт, только исключи системные символы.

Автор: CuamckuyKot 17.2.2006, 23:09
Вывод на консоль.
Заполнять - неважно, пускай буквы и цифры.

Автор: LSD 17.2.2006, 23:18
Код
char[] dict = {'1', '2', '3', '4', '5', '6', '7', '8', '9', '0', 'A', 'B', 'C', 'D', 'E', 'F'};
Random rnd = new Random();
char[] buffer = new char[100];
for(int i = 0; i < buffer.length; i++)
  buffer[i] = dict[rnd.nextInt(dict.length)];
System.out.println(buffer);

dict - словарь используемых символов

Автор: CuamckuyKot 19.2.2006, 18:34
Такой вопрос - как вычислить какой символ встречается чаще всего?
Надо буфер делать по заданию не массивом, а коллекцией, например, ArrayList.

Автор: batigoal 19.2.2006, 21:50
Для экономии времени подсчет можно делать сразу при генерации.
Буфер, вообще говоря, можно сделать просто строкой. Или объектом класса StringBuffer.

Код

char[] dict = {'1', '2', '3', '4', '5', '6', '7', '8', '9', '0', 'A', 'B', 'C', 'D', 'E', 'F'};
        int[] frequency = new int[dict.length]; // здесь будем запоминать, сколько раз мы сгенерировали каждый символ

        int index;
        Random rnd = new Random();
        StringBuffer strBuff = new StringBuffer();

        for (int i = 0; i < 100; i++)
        {
            index = rnd.nextInt(dict.length);
            strBuff.append(dict[index]);
            frequency[index]++; // увеличиваем количество использований этого символа на единицу
        }
        System.out.println(strBuff);


        // пробегаемся по массиву и ищем самое большое число, запоминаем его позицию
        index = 0;
        for (int i = 1; i < frequency.length; i++)
        {
            if(frequency[i] > frequency[index])
                index = i;
        }
        System.out.println("Symbol "+dict[index]+" is used "+frequency[index]+" times");

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)