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

Obliczanie silni Java

Fiszki IT
Fiszki IT
0 głosów
1,427 wizyt
pytanie zadane 18 marca 2019 w Java przez Paweł123 Nałogowiec (33,610 p.)
zmienione kategorie 18 marca 2019 przez ScriptyChris

Witam, mam napisać program, który obliczy silnie, jednak cos nie działa, może ktoś mi wytłumaczyć, dlaczego tak się dzieje

import java.util.*;
import java.lang.Math;

public class JavaApplication {
    private static Scanner input = new Scanner(System.in);

    public static void main(String[] args) {
        int liczba, wynik, x;
        
        System.out.println("Podaj silnie: ");
        liczba = input.nextInt();
        if (liczba <= 1) {
            System.out.println("Wynik: " + 1);
        } else {
            for (x = 1; x <= liczba; x++) {
                wynik = wynik * x;
            }
            System.out.println("Silnia: " + wynik);
        }
    }
}

 

1 odpowiedź

0 głosów
odpowiedź 18 marca 2019 przez Aisekai Nałogowiec (42,230 p.)
Wynik nie jest zainicjowany. Zainicjuj go 1. If jest niepotrzebny.
komentarz 18 marca 2019 przez Paweł123 Nałogowiec (33,610 p.)
Jak mam to zrobić?
komentarz 18 marca 2019 przez Aisekai Nałogowiec (42,230 p.)
wynik=1
komentarz 19 marca 2019 przez Paweł123 Nałogowiec (33,610 p.)
edycja 19 marca 2019 przez Paweł123

Nadal nie rozumiem...

Napisałem coś takiego

import java.util.*;
import java.lang.Math;

public class JavaApplication {
    private static Scanner input = new Scanner(System.in);

    public static void main(String[] args) {
        int liczba, wynik, x;
        
        System.out.println("Podaj silnie: ");
        liczba = input.nextInt();
        if (liczba <= 1) {
            System.out.println("Wynik: " + 1);
        } else {
            for (x = 1; x <= liczba; x++) {
                wynik = liczba * (liczba - 1);
            }
            System.out.println("Silnia: " + wynik);
        }
    }
}

Jednak mam problem z petlą

komentarz 19 marca 2019 przez Aisekai Nałogowiec (42,230 p.)

Bo to: 

 wynik = liczba * (liczba - 1);

jest kompletnie bezsensu.

Po pierwsze: nie deklaruj zmiennych "na zapas". Deklaruj je w chwili, kiedy potrzebujesz i jeśli możesz to od razu je inicjuj. GC dostaje w pewnym stopniu przez to po dupie (przenoszenie obiektów między heapami). Pogubisz się potem też w zmiennych. 

Zapis:

int liczba, wynik, x;

też nie powinien mieć miejsca. Lepiej zapisywać jedna pod drugą. W programie wystarczy zmienić w pierwszej wersji na:

int liczba;
int wynik = 1; 
int x;

żeby zadziałało. 

Zmienne sterujące pętlą, jeżeli nie potrzebujesz ich nigdzie indziej tylko w pętli/do sterowania pętli, deklaruj w nagłówku pętli. 

 

Podobne pytania

0 głosów
0 odpowiedzi 67 wizyt
0 głosów
2 odpowiedzi 107 wizyt
pytanie zadane 20 stycznia 2020 w SPOJ przez enpikku Nowicjusz (120 p.)
0 głosów
1 odpowiedź 170 wizyt
pytanie zadane 11 września 2019 w C i C++ przez Tedi Użytkownik (580 p.)
Porady nie od parady
Forum posiada swój własny serwer Discord, dzięki któremu będziesz mógł po prostu pogadać z innymi Pasjonatami lub zapytać o jakiś problem. Podstrona z chatem znajduje się w menu pod ikoną człowieka w dymku.IRC

84,750 zapytań

133,554 odpowiedzi

295,976 komentarzy

56,009 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...