• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Napisać metodę przyjmującą tablicę liczb naturalnych i zwracającą ich sumę

Object Storage Arubacloud
0 głosów
348 wizyt
pytanie zadane 7 sierpnia 2022 w Java przez asiw223 Nowicjusz (120 p.)

Mam problem z zadanie o treści: Napisać metodę przyjmującą tablicę liczb naturalnych i zwracającą ich sumę

Udało mi się wypisać sumę przez System.out.println ale nie mogę tego wypisać przez return

 public static void main(String[] args) {
        int[] liczby = {1, 2, 3 , 4, 5, 6, 7 , 8, 9, 10};
        int suma = 0;
        for (int i = 0; i < liczby.length; i++) {
            suma += liczby[i];
        }
        System.out.println(suma);



    }

 

tu próba rozwiązania zadania za pomocą return:

public static void main(String[] args) {
        int[] liczby = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

        System.out.println(sumaliczb(liczby));
    }

        private static int sumaliczb ( int[] zbiorliczb) {
            int suma = zbiorliczb[0];
            for (int liczby : zbiorliczb) {
                if (liczby < zbiorliczb) {
                    suma = liczby;
                }
            }
            return suma;
        }

proszę o wskazówki

komentarz 7 sierpnia 2022 przez Wiciorny Ekspert (269,710 p.)

poprawnie wykonałeś, akurat zwracasz sume- z funkcji, samo zwrócenie możesz albo wypisać jak to zrobiłeś przez sout, albo przypisać do zmiennej i zrobić coś z tą zmienną, ewentualnie ją przekazań do wyświetlenia.

Można też tak :
 

System.out.println(Arrays.stream(liczby).sum());

 

2 odpowiedzi

+1 głos
odpowiedź 7 sierpnia 2022 przez Apled Dyskutant (9,520 p.)

Udało mi się wypisać sumę przez System.out.println ale nie mogę tego wypisać przez return

Return nic nie wypisuje, return ZWRACA jakąś wartość.

Wynik otrzymany z return możesz sobie przyrównać do zmiennej - deklarujesz zmienną, ma ona przypisaną jakąś wartość, ale jak chcesz tą wartość zobaczyć to musisz ją sobie wypisać.

Akurat przez początkujących jest to często mylone. 

+1 głos
odpowiedź 8 sierpnia 2022 przez VBService Ekspert (252,740 p.)
edycja 8 sierpnia 2022 przez VBService

Na początek mogłeś przenieś do funkcji to co już napisałeś

int suma = 0;
for (int i=0; i<liczby.length; i++)  {
    suma += liczby[i];
}
System.out.println(suma);

tylko zamiast

System.out.println(suma);

napisać

return suma;

 

całość  [ on-line ]

public class Main
{
    public static void main(String[] args) {
        int[] liczby = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
 
        System.out.println(sumaliczb(liczby));
    }
 
    private static int sumaliczb (int[] liczby) {
        int suma = 0;
        for (int i=0; i<liczby.length; i++)
            suma += liczby[i];
            
        return suma;
    }
}

 

W wersji z return Moim zdaniem błędny zapis jest w liniach

public static void main(String[] args) {
        int[] liczby = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
 
        System.out.println(sumaliczb(liczby));
    }
 
        private static int sumaliczb ( int[] zbiorliczb) {
            int suma = zbiorliczb[0];
            for (int liczby : zbiorliczb) {
                if (liczby < zbiorliczb) {
                    suma = liczby;
                }
            }
            return suma;
        }

linia 8, skoro i tak "pobierasz" w pętli poniżej wszystkie wartości z tablicy po kolei to ten zapis

int suma = zbiorliczb[0];

spowoduje odczytanie wartości o indeksie 0 (zero) dwa razy

 

dlaczego chciałeś użyć znaku "mniejszy niż" do sprawdzenia wartości pobranej z tablicy (zmienna liczby) do zmiennej "przechowującą" całą tablicę (zmienna zbiorliczb).

if (liczby < zbiorliczb)

 

no ten zapis nie sumuje wartości, tylko nadpisuje ciągle nową

suma = liczby;

 

przecież użyłeś wcześniej prawidłowego zapisu do sumowania ( += )

suma += liczby[i];

 

Druga wersja podana przez Ciebie różni się Moim zdaniem tylko rodzajem pętli jaką użyłeś, przez co zmienia się sposób pobierania i przekazywania wartości

 

czyli  [ on-line ]

public class Main
{
    public static void main(String[] args) {
        int[] liczby = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
 
        System.out.println(sumaliczb(liczby));
    }
 
    private static int sumaliczb (int[] liczby) {
        int suma = 0;
        for (int liczba : liczby)
            suma += liczba;
            
        return suma;
    }
}

 

Podobne pytania

0 głosów
0 odpowiedzi 322 wizyt
0 głosów
2 odpowiedzi 1,911 wizyt

92,551 zapytań

141,393 odpowiedzi

319,523 komentarzy

61,936 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...