CodeGym
Promocja
CodeGym University
Nauka
Kurs
Zadania
Ankiety & Quizy
Gry
Pomoc
Harmonogram kopniaków w tyłek
Społeczność
Użytkownicy
Forum
Czat
Artykuły
Historie sukcesu
Aktywność
Opinie
Subskrypcje
Jasny motyw
Pytanie
  • Opinie
  • O nas
Rozpocznij
Rozpocznij naukę
Rozpocznij naukę teraz
  • Wszystkie pytania
Magda
Poziom 10
Poland
  • 07.01.2023
  • 64widoki
  • 2komentarze

co jest nie tak?

Pytania dotyczące zadania Średnia arytmetyczna
Składnia Java,  Poziom 5,  Lekcja 5
Dyskutowane

Za pomocą klawiatury wprowadź liczby i oblicz ich średnią arytmetyczną.
Jeśli użytkownik wprowadzi -1, zostanie wyświetlona średnia arytmetyczna wprowadzonych liczb i program się zakończy.
-1 nie powinno być włączane do obliczeń.

Oto kilka przykładów:
a) jeśli wprowadzisz liczby
1
2
2
4
5
-1
to wyświetlimy
2.8

b) jeśli wprowadzisz liczby
4
3
2
1
-1
to wyświetlimy
2.5

Wskazówka: jedno z rozwiązań zawiera następującą konstrukcję:

while (true) {
    int liczba = wczytaj liczbę;
    if (sprawdza, czy liczba jest -1)
        break;
}

Wymagania:
  • Program musi odczytywać dane z klawiatury.
  • Program powinien wyświetlać dane na ekranie.
  • Po wprowadzeniu -1 program musi prawidłowo się zakończyć.
  • Jeśli wprowadzisz kolejno liczby 1, 2, 2, 4, 5 i -1, program powinien wyświetlić 2.8.
  • Jeśli wprowadzisz kolejno liczby -100, 0, 100 i -1, program powinien wyświetlić 0.0.
  • Jeśli wprowadzisz kolejno liczby 1 i -1, program powinien wyświetlić 1.0.
  • Wyświetlany tekst musi spełniać warunki zadania dla danych wejściowych.
package pl.codegym.task.task05.task0507; /* Średnia arytmetyczna */ import java.io.BufferedReader; import java.io.InputStreamReader; public class Solution { public static void main(String[] args) throws Exception { //tutaj wpisz swój kod BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); int sum = 0; int n = 0; while (true) { int liczba = Integer.parseInt(reader.readLine()); sum = sum + liczba; n++; if (liczba == (-1)) { n--; double ar = sum/n; System.out.println(ar); break; } } } }
0
Komentarze (2)
  • Popularne
  • Najnowsze
  • Najstarsze
Musisz się zalogować, aby dodać komentarz
Karol Grzeszczak
Poziom 31 , Poland, Poland
7 stycznia, 20:28przydatny
w takim warunku nie wyjdzie przy wpisaniu drugiego przykładu gdzie wynik ma być 2.5 w Twoim kodzie wychodzi 2 po poprawce 2.25 czyli Twój kod wykonuje działanie 4 + 3 + 2 + 1 co daje 10 ale na tym nie kończy 10 - 1 = 9 odejmujesz od n czyli wychodzi 9 / 4 = 2.25 stawiasz jeden warunek
if (liczba == -1) {
                break;
            }
to kończy pracę programu od razu gdy wykryje liczbę -1 wtedy masz pewność, że ona nigdy nie zostanie użyta w obliczeniach po warunku dopiero wykonujesz obliczenia w Twoi przypadku najpierw dodasz -1 a dopiero program przestanie działać cały Twój kod można skrócić do takiej formy
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int sum = 0;
        int n = 0;
        while (true) {
            int liczba = Integer.parseInt(reader.readLine());

            if (liczba == -1) {
                break;
            }
            sum = sum + liczba;
            n++;
        }
        System.out.println(sum);
        System.out.println(n);
        System.out.println(sum/n);
tak jak kolega niżej napisał dzielisz przez integer czyli liczby całe więc to i tak nie zadziała chociaż użyjesz double c = a / b najlepiej zmienić na początku
int sum = 0;
       double n = 0;
+2
Thomas
Poziom 31 , Bayreuth, Germany
7 stycznia, 13:02
integer division in line 20
+1
Nauka
  • Rejestracja
  • Kurs Java
  • Pomoc w Zadaniach
  • Cennik
  • Projekty Gier
  • Składnia Java
Społeczność
  • Użytkownicy
  • Artykuły
  • Forum
  • Czat
  • Historie Sukcesu
  • Aktywność
  • Affiliate Program
Firma
  • O nas
  • Kontakt
  • Opinie
  • Pokój prasowy
  • CodeGym dla EDU
  • FAQ
  • Wsparcie
CodeGym CodeGym to internetowy kurs uczący od podstaw programowania w języku Java. Ten kurs to doskonały sposób na opanowanie języka Java dla początkujących. Zawiera pond 1200 zadań z możliwością natychmiastowej weryfikacji oraz niezbędny zakres teorii na temat podstaw języka Java. Aby pomóc Ci odnieść sukces w nauce, przygotowaliśmy również zestaw elementów motywacyjnych: quizy, projekty programistyczne, artykuły na temat efektywnego uczenia się i kariery programisty Java.
Obserwuj nas
Język interfejsu
Programistą Się Nie Rodzi, Programistą Się Zostaje © 2023 CodeGym
MastercardVisa
Programistą Się Nie Rodzi, Programistą Się Zostaje © 2023 CodeGym
This website uses cookies to provide you with personalized service. By using this website, you agree to our use of cookies. If you require more details, please read our Terms and Policy.