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

question-closed Java- problem z nauką pętli for

Object Storage Arubacloud
0 głosów
398 wizyt
pytanie zadane 13 kwietnia 2017 w Java przez Axter Początkujący (390 p.)
zamknięte 13 kwietnia 2017 przez Axter

Witam !

Od niedawna podjąłem się nauki Javy, lecz przez dłuższy czas nie mogę zrozumieć działania pętli for w ćwiczeniu opisanym poniżej:

Metoda zwraca sumę kolejnych liczb naturalnych począwszy od liczby przekazanej przez parametr int firstNumber skończywszy na liczbie przekazanej przez parametr int lastNumber. Uzupełnij metodę aby zwracała poprawny wynik.

Mój kod:

public class Tools
{
    public static int sum ( int firstNumber, int lastNumber ) {
        int y=0;
        for ( int x = firstNumber ; x <= lastNumber ; x++ )
        {
        if (y > x)
        {return y= y +x;}
        }
        return y;
    }
}

Testy pokazują wartość y=0

Bardzo proszę o pomoc w zrozumieniu działania pętli w tym zadaniu

komentarz zamknięcia: Prawidłowa odpowiedż
komentarz 13 kwietnia 2017 przez manjaro Nałogowiec (37,390 p.)

Tak tylko dodam że jeżeli chodzi o naukę pętli to wszystko jest OK, natomiast z punktu widzenia optymalizacji to rozwiązanie jest fatalne. Dużo szybszym i lepszym rozwiązaniem jest kod bez użycia pętli:

public static int sum ( int firstNumber, int lastNumber ) {
        int answer;
        answer = (firstNumber + lastNumber) * (lastNumber - firstNumber + 1) / 2;
        return answer;
}

 

1 odpowiedź

0 głosów
odpowiedź 13 kwietnia 2017 przez Michał Kazula Pasjonat (19,540 p.)
wybrane 13 kwietnia 2017 przez Axter
 
Najlepsza

I dobrze Ci pokazuje :-)

public static int sum ( int firstNumber, int lastNumber ) {
        int y=0;
        for ( int x = firstNumber ; x <= lastNumber ; x++)
        {
             if (y < x) {
                  y = y +x;
            }
        }
        return y;
}

Co chcesz uzyskać tą pętlą?

komentarz 13 kwietnia 2017 przez Axter Początkujący (390 p.)

Tą pętlą chcę uzyskać sumy kolejnych liczb naturalnych począwszy od liczby przekazanej przez parametr int firstNumber do int lastNumber.

Przykładowo

firstNumber = 3;

lastNumber=  5

y= 3+ 4 + 5 = 12;

Nie wiem tylko w jaki sposób wyciągnąć taki wynik z pętli sad

komentarz 13 kwietnia 2017 przez Michał Kazula Pasjonat (19,540 p.)
To ten if w środku pętli nie jest Ci potrzebny.
komentarz 13 kwietnia 2017 przez Axter Początkujący (390 p.)
Sama instrukcja  - return y= y+x; w ciele pętli ostatecznie doprowadza w testach:

FAILEDsum( 333, 969 ) { return 333; } == 414687

FAILEDsum( 103, 903 ) { return 103; } == 402903

FAILEDsum( 722, 1674 ) { return 722; } == 1141694

FAILEDsum( 889, 1334 ) { return 889; } == 495729

FAILEDsum( 3, 311 ) { return 3; } == 48513

FAILEDsum( 16, 590 ) { return 16; } == 174225

FAILEDsum( 594, 791 ) { return 594; } == 137115

FAILEDsum( 790, 1144 ) { return 790; } == 343285

FAILEDsum( 664, 1597 ) { return 664; } == 1055887

FAILEDsum( 768, 1295 ) { return 768; } == 544632

W wielkim skrócie funkcja zwraca tylko wartość firstNumber.
komentarz 13 kwietnia 2017 przez Michał Kazula Pasjonat (19,540 p.)

Ale dając return w ciele funkcji chcesz z niej wyskoczyć dlatego Ci krzyczy błędami.

Spróbuj tak:

public static int sum ( int firstNumber, int lastNumber ) {
        int y=0;
        for ( int x = firstNumber ; x <= lastNumber ; x++)
        {
                  y += x;
        }
        return y;
}

 

komentarz 13 kwietnia 2017 przez Axter Początkujący (390 p.)
Zadziałało idealnie !

Nie pomyślałem nad wydaniem polecenia "+=" gdyż uważałem to za działanie dziwaczne.

Musze się jeszcze wiele nauczyć ale bardzo dziękuję za pomoc :D ;)

Zamykam post :)

Podobne pytania

0 głosów
1 odpowiedź 104 wizyt
pytanie zadane 7 lutego 2021 w C i C++ przez Nabuchadonozor Gaduła (3,120 p.)
0 głosów
3 odpowiedzi 1,162 wizyt
pytanie zadane 1 października 2020 w C i C++ przez lewur Początkujący (470 p.)
+1 głos
1 odpowiedź 179 wizyt
pytanie zadane 17 marca 2020 w Python przez wojtek_suchy Mądrala (6,880 p.)

92,552 zapytań

141,399 odpowiedzi

319,534 komentarzy

61,938 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!

...