Avatar
Václav
Neregistrovaný
Avatar
Václav:

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:

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ý
Redaktor
Avatar
Odpovídá na Václav
Jan Vargovský:

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

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

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
Redaktor
Avatar
Odpovídá na Václav
Honza Bittner:

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
Ptejte se mě na cokoli na https://github.com/HoBi/ama a followujte mě na Twitteru https://twitter.com/tenhobi. :-)
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Václav
David Čápka:

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
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
DeamoniX
Člen
Avatar
DeamoniX:

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.