Zadanie- sumowanie liczb w javie

0

Witam, dopiero zaczynam programowanie w javie i mam do zrobienia kilka zadań i małe problemy z niektórymi;
1)Ile kolejnych liczb należy dodać aby ich suma przekroczyła 1000?
2) Ile kolejnych liczb parzystych i nieparzystych należy dodać aby ich suma przekroczyła 1000?

Chodzi o program który policzy 1+2+3 itd.. i jak wyjdzie mu ponad 1000 to wydrukuje na ekran "Aby suma przekroczyła 1000 należy dodać X liczb.
Moja próba wygląda tak i teoretycznie nie ma tu żadnych błędów w kodzie, ale program kompiluje się w nieskończoność.., gdzieś chyba musi się zapętlać.

public static void main (String[] args) {
        int x;
        int y = 1000;
        int sumuj = 0;
        
        
        for (x = 0; sumuj<=y; x++); {
           sumuj = sumuj +x;
        }
        
        System.out.println("Potrzebnych kolejnych liczb aby przekroczyc 1000: " + x);
    }
}
0
(x = 0; sumuj<=y; x++);

Po co ten średnik na końcu?

0

Bo jak go nie ma to IDE wyświetla błąd i podpowiada, że ma tam być.

0
/**
 * Project: Easy-peasy
 * Created by R3id4k on 08.11.2017.
 */
public class SumaTysiac {
    public static void main(String[] args) {

        int suma = 0;
        int iloscLiczb = 0;

        for (int i = 0; i <= 1000; i++) {
            suma += i;
            iloscLiczb++;
            if (suma > 1000) {
                break;
            }
        }

        System.out.printf("Potrzeba %d kolejnych liczb.", iloscLiczb);

    }
}

0
javadeveloper napisał(a):

Bo jak go nie ma to IDE wyświetla błąd i podpowiada, że ma tam być.

Co to za IDE? Bez tego średnika program będzie działał poprawnie.

0

Twój kod działa. Dzięki!

0

Faktycznie, średnik był zbędny ale nic wielkiego nie robil.

0

Ale gafa :D Skasowalem srednik i moj kod tez zadzialal :D

0

W zadaniu drugim zaminielem x++ na x=x+2 i wychodzi 66 dla liczb parzystych a powinno wyjsc 32

0

W kodzie kolegi wyżej jak zmienie i++ na i=i+2 to wychodzi 33
w moim kodzie jak zmienie x++ na x=x+2 wychodzi 66.
Dlaczego jego kod po zmianie daje prawidlowy wynik?

0

uff

/**
 * Created by R3id4k on 08.11.2017.
 */
public class SumaTysiac {
    public static void main(String[] args) {

        int licznik = 1;
        int suma = 0;
        int sumaP = 0;
        int sumaN = 0;
        int licznikLocal = 0;
        int licznikLocalP = 0;
        int licznikLocalN = 0;
        boolean finito = false;

        while (!finito) {
            if (suma < 1000) {
                suma += licznik;
                licznikLocal++;
            }
            if ((sumaP < 1000) && (licznik % 2 == 0)) {
                sumaP += licznik;
                licznikLocalP++;
            }
            if ((sumaN < 1000) && (licznik % 2 != 0)) {
                sumaN += licznik;
                licznikLocalN++;
            }
            licznik++;
            if (suma > 1000 && sumaP > 1000 && sumaN > 1000) {
                finito = true;
            }
        }
        System.out.printf("Ilość liczb naturalnych potrzebnych do przekroczenia 1000 wynosi: %d%n", licznikLocal);
        System.out.printf("Ilość liczb parzystych potrzebnych do przekroczenia 1000 wynosi: %d%n", licznikLocalP);
        System.out.printf("Ilość liczb nieparzystych potrzebnych do przekroczenia 1000 wynosi: %d%n", licznikLocalN);
    }
}
0

Dzięki. napisałem to trochę prościej edytując twój poprzedni kod na x=x+2 i to samo dla nieparzystych zaczynając od zera, Wszystko działa.

0

Co oznacza %d i %d%n w tych kodach??

0

Używa się tego aby sformatować odpowiednio wyjście z liczbami.
Tutaj masz link do dokumentacji

%d oznacza liczbę całkowitą.
%n jest znakiem nowej linii który jest niezależny od platformy.

0
atmal napisał(a):

Używa się tego aby sformatować odpowiednio wyjście z liczbami.
Tutaj masz link do dokumentacji

Oo dziękuję, dopiero się uczę i rozumiałam wszystko z tych kodów oprócz właśnie tego %d, w kompilatorze sprawdziłam sobie co bedzie jak to usune z kodu i "na żywo" sobie zobaczyłam ocb, żeby zrozumieć działanie.
Poczytam tą dokumentacje i się upewnie czy dobrze myśle ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1