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


Автор: ArniLand 2.11.2010, 00:28
Разбираюсь с массивами на джаве, вот перевожу пример из книги по Си на Джаву. Условия задачи сорок студентов попросили оценить качество питания в студенческой столовой по шкале от 1 до 10. Поместите сорок ответов в целочисленный массив и определите итоговый результат опроса. Вот что я сделал, но при этом выводиться странниц результат
Код

public static void main(String[] args) {
        int answer;
        int rating;

        int frequency[] = new int[11];
        for (int i = 0;  i < 11; i++){
            frequency[i] = 0;
        }

        int responses[] = {1, 2, 6, 4, 8, 5, 9, 7, 8,
        10, 1, 6, 3, 8, 6, 10, 3, 8, 2, 7, 6, 5, 7, 6, 8, 6, 7, 5, 6, 6,
        5, 6, 7, 5, 6, 4, 8, 6, 8, 10};

        for (answer = 0; answer < responses.length; answer++){
            ++frequency [ responses [answer]];
        }
        for (rating = 1; rating < frequency.length; rating++) {
            System.out.println("" + rating );
            System.out.println(""+ frequency[rating]);
        }

    }

результат программы
1
2
2
2
3
2
4
2
5
5
6
11
7
5
8
7
9
1
10
3

Автор: jGorets 2.11.2010, 00:59
почему странный? вроде все нормально - что просишь - то и выводит, попробуй перед тем как разбераться с массивами разобраться с циклами )
Цитата

 и определите итоговый результат опроса.

а вот ето как? я думал надо все результаты сложить и на сумму разделить... или? 










0

Добавлено через 9 минут и 55 секунд
Код

public static void main(String[] args) {
        int answer;   // создал 2 переменные типа инт
        int rating;
        int frequency[] = new int[11]; // создал пустой массив из 12 элементов
        for (int i = 0;  i < 11; i++){      //  занулил его
            frequency[i] = 0;
        }
        int responses[] = {1, 2, 6, 4, 8, 5, 9, 7, 8,
        10, 1, 6, 3, 8, 6, 10, 3, 8, 2, 7, 6, 5, 7, 6, 8, 6, 7, 5, 6, 6,
        5, 6, 7, 5, 6, 4, 8, 6, 8, 10};   // создал массив с задаными элементами 
        for (answer = 0; answer < responses.length; answer++){
            ++frequency [ responses [answer]];
        }   // перезатер свой массив просто последовательность, причем сначало значение инкрементировал, а потом записывал
        for (rating = 1; rating < frequency.length; rating++) {
  
            System.out.println(rating + " "+ frequency[rating]); // здесь уже считаешь от 1 до 11 и выводишь, причем вывод нагляднее смотрелся бы именно так 
        }
    }

Автор: nc30 2.11.2010, 09:37
Цитата(jGorets @ 2.11.2010,  00:59)
Код

        int frequency[] = new int[11]; // создал пустой массив из 12 элементов
        for (int i = 0;  i < 11; i++){      //  занулил его
            frequency[i] = 0;
        }

Ничего "занулять" не нужно. В Java все элементы массива чисел инициализируются нулями при его создании  smile 


Код

public static void main(String[] args) {

    int responses[] = {
        1,  2,  6,  4,  8,  5,  9,  7,  8, 10,
        1,  6,  3,  8,  6, 10,  3,  8,  2,  7,
        6,  5,  7,  6,  8,  6,  7,  5,  6,  6,
        5,  6,  7,  5,  6,  4,  8,  6,  8, 10
    };

    int frequency[] = new int[10];

    for (int i = 0; i < responses.length; i++) {
        ++frequency[responses[i]-1];
    }

    for (int rating = 1; rating <= frequency.length; rating++) {
        System.out.print("Rating [" + rating + "]: ");
        System.out.println(frequency[rating-1]);
    }
}

Для "красивости" вывода можно изменить последний цикл таким образом:
Код

        for (int rating = 1; rating <= frequency.length; rating++) {
            System.out.print("Rating [" + rating + "]: ");
            System.out.println(frequency[rating-1] + " voice"
                    + (frequency[rating-1] == 1 ? "" : "s"));
        }

В общем, разбирайтесь, пробуйте.

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