Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Václav
Neregistrovaný
Avatar
Václav:24.11.2013 0:12

Dobrý den, mám udělat program který ze zadané řady čísel vypíše počet záporných a když se napíše v řadě 0 tak skončí. mám tento kód , ale nevypíše mi to správný počet záporných. Co tam mám prosím Vás špatně na tom výstupu?

public class ZapornaCisla {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Zadejte posloupnost cisel ukoncenou nulou:");
        int pocetZapornych = 0;
        int zadaneCislo=0;
       zadaneCislo= sc.nextInt();
        //int pocetCisel;
        System.out.println("---Vysledky---");
        System.out.println("Pocet zapornych cisel:");
         int pocetZapornychCisel =vypocet(pocetZapornych);
         System.out.println(pocetZapornychCisel);

    }
        public static int vypocet(int pocetZapornych) {

            int zadaneCislo;
            for (int i = 0; i < 100000; i++) {
            pocetZapornych = 0;
            zadaneCislo=0;
            //zadaneCislo= sc.nextInt();
            if (zadaneCislo == 0)
                   break;
           if (zadaneCislo<0)
           { pocetZapornych=pocetZapornych;}



    }return  pocetZapornych+1;


    }



        }
 
Odpovědět
24.11.2013 0:12
Avatar
DeamoniX
Člen
Avatar
DeamoniX:24.11.2013 14:37

Ahoj, zkus udělat to počítání záporných čísel v nějakém cyklu, teď nejsem doma, ale až dorazím, tak bych ti mohl udělat nějakou ukázku, třeba ti pomůže :)

 
Nahoru Odpovědět
24.11.2013 14:37
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na
Jan Vargovský:24.11.2013 14:43

Dost chaotický kód. Zkus ho vylepšit, už třeba cyklem while.

 
Nahoru Odpovědět
24.11.2013 14:43
Avatar
Václav
Neregistrovaný
Avatar
Václav:24.11.2013 14:47

už jsem ho předělal. tady je výsledek.

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int cislo;
        int pocetZapornych=0;

        System.out.println("Zadejte ciselnou posloupnost ukoncenou nulou : ");
    do  {

      cislo=sc.nextInt();
       if (cislo<0){
      pocetZapornych = pocetZapornych+1;
      }
    }
    while (cislo != 0);
        // TODO code application logic here
     System.out.println("---Vysledky---");
    System.out.println("Pocet zapornych cisel: ");
    System.out.println(pocetZapornych);
    }
 
Nahoru Odpovědět
24.11.2013 14:47
Avatar
Honza Bittner
Tvůrce
Avatar
Odpovídá na
Honza Bittner:24.11.2013 14:51

ten for cyklus máš úplně nesmyslný ...

tobě se sice 10000x opakuje, ale vždy dosadíš zadaneCislo jako 0, pak ti vždy tedy výjde podmínka == 0

zkus si nějak logicky přepsat tu celou funkci... hlavně posíláš do funkce pocetZapornych a pak s tím nikde nepracuješ (tedy, také to vynuluješ)

Nahoru Odpovědět
24.11.2013 14:51
FIT ČVUT alumnus :-) Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://github.com/tenhobi/ama.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na
David Hartinger:24.11.2013 14:59

To už vypadá mnohem lépe. Metodu nextInt nepoužívej, protože dělá něco trochu jiného, než si myslíš. Načti si řádku textu přes nextLine() a potom z ní to číslo naparsuj.

Nahoru Odpovědět
24.11.2013 14:59
New kid back on the block with a R.I.P
Avatar
DeamoniX
Člen
Avatar
DeamoniX:24.11.2013 15:11

Tak koukám, že jsi to udělal dřív než jsem stihl dorazit :D dobrá práce

 
Nahoru Odpovědět
24.11.2013 15:11
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.