Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 17.01.2015
Сообщений: 20

Объясните как работает программа

06.03.2015, 00:28. Показов 1298. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В учебнике Шилдта встретил программу, но не могу понять как работает самый нижний цикл for что отображает кривую распределения. Почему он не ровно выводит звездочки, и вообще откуда он берет начальное значения? Объясните пожалуйста?
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import java.util.*;
 
class STDemo {
    public static void main(String args[]) {
        Random r = new Random();
        double val;
        double sum = 0;
        int bell[] = new int[10];
        for (int i = 0; i < 100; i++) {
            val = r.nextGaussian();
            sum += val;
            double t = -2;
            
            for (int x = 0; x < 10; x++, t += 0.5)
                if (val < t) {
                    bell[x]++;
                    break;
                }
        }
        System.out.println("Среднее всех значений: " + (sum / 100));
        // отобразить кривую распределения
        for (int i = 0; i < 10; i++) {
            for (int x = bell[i]; x > 0; x--)
                System.out.print("*");
            System.out.println();
        }
    }
}
Вывод программы:
Среднее всех значений: -0.02885995797977853
**
***
**********
***********
***************************
*******************
*****************
*****
***
*
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.03.2015, 00:28
Ответы с готовыми решениями:

Объясните построчно, как работает программа...
package test.third; /* * Программа, в которой все переданные во входную строку аргументы * выводятся на экран в обратной...

Объясните пожалуйста как работает эта программа
Объясните пожалуйста как работает эта программа import java.util.Scanner; public class Main { public static void...

Объясните как работает код
Не могу понять, как работает этот код. class Xcopy { // обьявили класс public static void main(String args) { ...

3
73 / 73 / 28
Регистрация: 06.10.2013
Сообщений: 334
06.03.2015, 11:16
Лучший ответ Сообщение было отмечено sfisher как решение

Решение

Доброго времени суток!
Последний цикл делает следующее:
1. строка "for (int i = 0; i < 10; i++) {"
В этой строке программа пробегается по всем элементам массива bell[], который имеет максимальный размер 10.

2. строка "for (int x = bell[i]; x > 0; x--)"
В этой строке вычисляется значение каждого элемента массива bell[], который состоит из звездочек. т.о. Значение каждого элемента - есть количество * которое нужно нарисовать

3. строка "System.out.print("*");"
В этой строке производится вывод на экран того количества *, которое равно значению элемента массива bell[]

Думаю понятно объяснил...
1
0 / 0 / 0
Регистрация: 17.01.2015
Сообщений: 20
06.03.2015, 13:01  [ТС]
JavaUser а оно берет значение из предыдущего цикла, или заново перебирает массив? Почему каждый раз звездочек разное количество?
0
0 / 0 / 1
Регистрация: 06.03.2015
Сообщений: 1
06.03.2015, 15:48
Лучший ответ Сообщение было отмечено sfisher как решение

Решение

В самом первом цикле for (int i = 0; i < 100; i++) массив заполняется случайными значениями по определенному алгоритму - поэтому каждый раз в нем разные значения. Потом в цикле for (int i = 0; i < 10; i++) эти значения используются в качестве количества выводимых звездочек.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.03.2015, 15:48
Помогаю со студенческими работами здесь

Объясните как работает код
Объясните, пожалуйста, как работает этот код. public static int reverseArray(int nums) { int tmp; for (int i = 0;...

Объясните как работает статическая инициализиция
Здравствуйте class StaticSuper { static int g = 40; static { g = 50; System.out.println(&quot;Родительский статический...

Объясните, как работает регулярное выражение
Здравствуйте, уважаемые форумчане. Прошу Вашей помощи. Есть регулярное выражение для проверки ip-адреса. Регулярное выражение:...

Объясните, как здесь работает рекурсия
Объясните как работает рекурсивный метод в данном коде class BWDemo { /** * @param args */ public static void...

Объясните пожалуйста как работает этот код, как это объяснить преподавателю, кто шарит
Тут вначале понятно, тип матрица 5 на 5, дальше что за переменные? и что за условие в цикле выполняется не совсем понимаю, объяните плиз ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru