Урок 22. Java Програмування - Середнє арифметичне (Українською)

Поделиться
HTML-код
  • Опубликовано: 15 апр 2017
  • В цьому уроці ми напишемо програму, яка буде вираховувати середнє арифметичне із введених користувачем чисел.
    Ми напишемо два варіанти тієї ж програми - одну просту - для засвоєння вивченого; і одну складнішу - де потрібно буде подумати над логікою програми.
    Ми використаємо елементи/операції, вивчені в попередніх уроках (введення від користувача, цикл while, перетворення типів даних).
    Д/З: створити програму, яка буде приймати довільну кількість чисел від користувача і коли користувач введе символ "!" (знак оклику) - виводити результат.
    🔔 VirtuAka
    ⭐️ www.VirtuAka.com
    🐤 / virtuaka
    Підтримати проект:
    💳 Raiffeisen: 4149 5001 4774 8720
    💳 Приватбанк: 5168 7520 1675 9428
    💰 ₿itcoin: 1KDGoPssAAzavLQeyToJUcznMGxq5JeN6Z
    Партнери проекту:
    🤝 www.movnyk.net
    💡 дякуємо всім за підтримку, підписки, вподобаки і репости!
  • НаукаНаука

Комментарии • 21

  • @alekz7809
    @alekz7809 Год назад

    Дуже цікаво. Дякую )

  • @user-vl3fc1pv3c
    @user-vl3fc1pv3c 5 лет назад

    Дуже Дякую за Чудовий Урок... Окреме Спасибі за Д/З... Самостійна робота, пошук та виправлення власних помилок дуже організовує та дисциплінує...

  • @igordiduh7350
    @igordiduh7350 4 года назад +1

    Дякую!

  • @user-yt7kp9vk8p
    @user-yt7kp9vk8p Год назад

    Дякую за уроки! Прошло 5 років, а Ваші уроки дуже корисні

    • @VirtuAka
      @VirtuAka  Год назад +1

      Мабуть ще років 20 будуть актуальні 😄

    • @stsfilm2340
      @stsfilm2340 Год назад

      @@VirtuAka ще би продовження )

  • @skaixok4537
    @skaixok4537 6 лет назад +1

    import java.util.Scanner;
    public class English11 {
    public static void main(String[] args) {
    Scanner io = new Scanner(System.in);
    int second = io.nextInt();
    int[] array = new int[second];
    int sum = 0;
    int result = 0;
    for(int i = 0; i < second; i++) {
    System.out.println("Chislo");
    array[i] = io.nextInt();
    sum = sum + array[i];
    }
    result = sum/second;
    System.out.println("result :" + result);
    }
    }
    }
    Код інший, але виконує ту саму функцію на вираховування середнього арифметичного

  • @valeriyasharova2381
    @valeriyasharova2381 3 года назад +1

    7:04

  • @veradmitrenko2265
    @veradmitrenko2265 6 лет назад +3

    Не розумію пояснення на 14 хв: "Перший раз, коли программа доходить до рядка коду while вона думає що ми уже ввели число хоча насправді ми поки що нічого не ввели, вона одразу додає одиницю".
    На мою думку, программа додає одиницю коли користувача вводить [.], на останньому колі циклу.
    Поправте, якщо я думаю невірно.

    • @SET-SKYNET
      @SET-SKYNET 5 лет назад +3

      Я також не одразу зрозумів, чому так, але ви правильно думаєте!))) :
      Тому що програма бачить всі наші введення (їх було 3. Дві цифри і крапка - третє введення (тобто кінець циклу))!
      Крапку, наша програма, також рахує за введений символ!)))
      Тому можна написати ось так: "int kilkistChysel = -1", на початку, щоб було простіше зрозуміти, замість "int kilkistChysel = 0", тим самим одразу мінусуючи один символ (крапку), який буде введено в кінці, для завершення процесу рахування. :)

    • @dezexofficialname8203
      @dezexofficialname8203 5 лет назад

      Можна і так зробити:
      public class Main {
      public static void main(String[] args) throws IOException {
      BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
      int chyslo = 0, suma = 0, kilkchysel = 0;
      String vvedennya = "0";
      while (vvedennya.equals("f") != true){
      chyslo = Integer.parseInt(vvedennya);
      suma = suma + chyslo;
      System.out.println("ВВедіть число або f щоб зупинитися");
      vvedennya = reader.readLine();
      kilkchysel++;
      if(vvedennya.equals("f")){
      --kilkchysel;
      }
      }
      int serednye = suma/kilkchysel;
      System.out.println("Середнє число з " + kilkchysel + " чисел = " + serednye);
      }
      }

    • @oleksandrhrebenyk6312
      @oleksandrhrebenyk6312 5 лет назад

      А що, якщо програма бачить той "0" (там де kilkistChysel = 0), і зараховує той "0" як одне число. Відповідно, крапку вона не враховує.
      Адже за ASCII "." буде дорівнювати 46

  • @stsfilm2340
    @stsfilm2340 Год назад

    Знатоки дайте мені розяснення на 14:10 стається помилка і автор говорить що потрібно добавити декримент (serdnie = suma / --kilsistychusel;) тому що при першому запуску програма перший раз думає що ми вже щось ввели але ми іще нічого не вводили.... як мені виглядає декримент потрібен щоб програма не рахувалла введеня крапки (для завершення) як введення числа і не враховувала його, чи я помиляюсь?

  • @vasylspar
    @vasylspar 5 лет назад

    Я правильно зрозумів, програма бачить команду [.] як текст? саме для того створили змінну типу String!!!

  • @user-xt7ie6gx4k
    @user-xt7ie6gx4k 6 лет назад

    Величезне спасибі!
    Маю запитання, чому, коли в мене цикл while мав такий вигляд:
    {
    System.out.println("Введіть будь яке число, коли захочите зупинитись введіть крапку (.)");
    vvedenia=scan.nextLine();
    chyslo=Double.parseDouble(vvedenia);
    suma=suma+chyslo;
    kilkist++;
    }
    - мені вибивало такі помилки, при введені крапки:
    Exception in thread "main" java.lang.NumberFormatException: For input string: "."
    at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
    at sun.misc.FloatingDecimal.parseDouble(Unknown Source)
    at java.lang.Double.parseDouble(Unknown Source)
    at dzseredniearyfm.main(dzseredniearyfm.java:15)
    Адже логічно:
    Спершу користувач вводить число;
    Далі ми його зчитуємо за допомогою сканера;
    Далі число переводимо з текстового формату в формат дабл;
    і тоді вже все по порядку.
    Коли зробив так як у прикладі (наступні рядки переставив над syso...):
    chyslo=Double.parseDouble(vvedenia);
    suma=suma+chyslo;
    то все запрацювало. Але не бачу логіки...(((
    Поясніть будь ласка!
    Дякую! ;)
    П.С.: Уроки супер! ;)

    • @user-cj8gr6fo1l
      @user-cj8gr6fo1l 6 лет назад

      У вашому випадку, в chyslo записується символ, який ви вводите. А коли натискаєте крапку, то крапка записується в chyslo, а chyslo типу дабл. Тобто, в дабл не можна записати крапку, тому вибиває помилка. А коли запис chyslo йде перед вводом, і ми вводимо крапку, то цикл зупиняється, тому що крапка дорівнює крапці. - Я теж пробував різні варіанти, і пробував, як ви. Думаю, що це через те, що написав вище.)

    • @staskulch
      @staskulch 5 лет назад

      @@user-cj8gr6fo1l Так цикл і в першому випадку повинен зупинятися коли ви вводете крапку і крапка не повинна присвоюватися числу так як крапка=крапці, тобто цикл має зупинятися в любому випадку коли бачить крапку. Нічого не розумію(((

    • @alikopikan8582
      @alikopikan8582 5 лет назад

      Не впевнений, але мабуть дана помилка виникає тому, що змінну vvedennya ми використовуємо як в умові, так і в тілі циклу while (при чому, в першій нас цікавить ця змінна як тип String, а в другому - тип double).
      Тому якщо писати програму в такому порядку, як в автора коментаря:
      vvedennya=scan.nextLine();
      chyslo=Double.parseDouble(vvedennya);
      то отримаємо наступне:
      1) Scanner scan = new Scanner(System.in); //створення сканера
      2) String vvedennya = "0.0"; //створення змінної vvedennya типу String і присвоєння їй значення 0
      3) while(vvedennya.equals(".") != true) //коли ця умова виконується вперше, то значення змінної vvedennya ЗАВЖДИ дорівнює 0
      4) vvedennya=scan.nextLine();
      // вводимо з клавіатури рядок, сканер перетворює його в тип String (бо ми написали nextLine) і присвоює дане значення змінній vvedennya
      5) chyslo=Double.parseDouble(vvedennya); // програма перетворює тип з String в double і присвоює це значення змінній chyslo... але НАЙВАЖЛИВІШЕ, що і сама змінна vvedennya перетворюється на тип double
      6) більше змінної vvedennya в тілі циклу ми не використовуємо, і тому він (після останнього рядка тіла) повторюється знову, але тепер ми не можемо перевірити умови, яка вказана в 3) пункті... while(vvedennya.equals(".") != true)... тому що даний рядок хоче перевірити змінну vvedennya як тип String, а вона у нас вже типу double - тому і помилка
      Якщо ж спочатку робити 5) пункт, а тоді 4) - як робив автор відео, то перший раз змінна chyslo (яке б число не ввів користувач) дорівнює 0 (вона це значення бере з пункту 2)) і лише після цього ми присвоюємо змінній vvedennya нове значення, яке ввів з клавіатури користувач (при чому теж типу String).
      Після цього цикл while "заходить на друге коло" і перше що робить - перевіряє знову умову (тобто чи не ввели ми "на першому колі" [.]). Якщо не ввели, то те що ввели, він перетворює з типу String в тип double і присвоює змінній chyslo і так далі по серпантину.
      Вибачаюсь за велику кількість тексту - не знав як простіше описати своє бачення))

  • @andriiechkenko6767
    @andriiechkenko6767 6 лет назад

    +

  • @ArsenalPrintLn
    @ArsenalPrintLn 10 месяцев назад

    Дивлюсь ваші уроки в 2023 р. але зараз вас ніде не видно як айті академію. Де ви поділися, що сталося? Дуже класні уроки!

    • @VirtuAka
      @VirtuAka  10 месяцев назад

      Підписуйтесь на канал, всі уроки тут