1 Востаннє редагувалося Chemist-i (03.08.2018 10:21:34)

Тема: Не зрозуміла частина коду.

// Поясніть будь ласка як тут працює ось цей цикл
//while (ivanov.getCountSpeeches() + petrov.getCountSpeeches()
//                + sidorov.getCountSpeeches() < totalCountSpeeches) {
//        }
//

public class Solution {
    public static int totalCountSpeeches = 200;
    public static int soundsInOneSpeech = 1000000;

    public static void main(String[] args) throws InterruptedException {
        Politician ivanov = new Politician("Іван");
        ivanov.join();
        Politician petrov = new Politician("Петро");
        Politician sidorov = new Politician("Сидор");
        
        while (ivanov.getCountSpeeches() + petrov.getCountSpeeches()
                + sidorov.getCountSpeeches() < totalCountSpeeches) {
        }
        
        
        System.out.println(ivanov);
        System.out.println(petrov);
        System.out.println(sidorov);
        
    }

    public static class Politician extends Thread {
        private volatile int countSounds;
        public Politician(String name) {
            super(name);
            start();
        }

        public void run() {
            while (countSounds < totalCountSpeeches * soundsInOneSpeech) {
                countSounds++;
            }
        }

        public int getCountSpeeches() {
            return countSounds / soundsInOneSpeech;
        }


        @Override
        public String toString() {
            return String.format("%s сказав слово %d разів", getName(), getCountSpeeches());
        }
    }
}

2

Re: Не зрозуміла частина коду.

замініть кацапське на українське, тоді поясню

3

Re: Не зрозуміла частина коду.

Нема питань. Замінив! Якось і не звернув уваги на то. Прошу пробачення!

Подякували: FakiNyan1

4

Re: Не зрозуміла частина коду.

У даному випадку, є три екземпляри класу, з кожного з яких викликається метод getCountSpeeches, який щось-там рахує й повертає результат, після чого ці результати додаються. Якщо отримана сума більша заданої, цикл завершується, якщо менша — цикл повторюється. Об'єкти класу Politician при створенні паралельно запускають треди, в кожному з яких відбувається циклічне збільшення змінної countSounds, що впливає на результат згаданого вище методу — по ідеї, в певний момент цей метод поверне достатньо великі значення, і цикл завершиться.

Подякували: koala, FakiNyan, leofun01, Hurmach4

5

Re: Не зрозуміла частина коду.

Hurmach написав:

Нема питань. Замінив! Якось і не звернув уваги на то. Прошу пробачення!

ще прізвища депутатів змініть, будь ласка.

6

Re: Не зрозуміла частина коду.

FakiNyan написав:
Hurmach написав:

Нема питань. Замінив! Якось і не звернув уваги на то. Прошу пробачення!

ще прізвища депутатів змініть, будь ласка.

Чому? Абдуллін, Агафонова та Алєксєєв будуть краще виглядати (реальні 3 перші за алфавітом дупутати)?

Подякували: leofun011

7

Re: Не зрозуміла частина коду.

koala написав:
FakiNyan написав:
Hurmach написав:

Нема питань. Замінив! Якось і не звернув уваги на то. Прошу пробачення!

ще прізвища депутатів змініть, будь ласка.

Чому? Абдуллін, Агафонова та Алєксєєв будуть краще виглядати (реальні 3 перші за алфавітом дупутати)?

ні, я українські хочу.
Степан Срака. Іван Перебийніс. Грицько Непийпива

Подякували: NaharD, PRY2

8

Re: Не зрозуміла частина коду.

Дякую за пояснення!

9

Re: Не зрозуміла частина коду.

Hurmach написав:

Дякую за пояснення!

"дякую" - не булькає )
в тому сенсі, що якщо Вам якийсь пост допоміг чи навіть просто  сподобався - внизу під постом є така кнопочка "дякую" - її і тиснемо )

Подякували: leofun011