špatné výsledky – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

špatné výsledky – Java – Fórum – Programujte.comšpatné výsledky – Java – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené — příspěvek s řešením.
Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
vasek.t0
Newbie
24. 11. 2013   #1
-
0
-

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;
        
        
    }
               
            
            
        }
Nahlásit jako SPAM
IP: 90.177.127.–
Reklama
Reklama
KIIV+42
God of flame
24. 11. 2013   #2
-
0
-

doufam ze bude mluvit za vse, kdyz jen toto zvyraznim:

pocetZapornych = pocetZapornych;
 

Nahlásit jako SPAM
IP: 93.91.152.–
Program vždy dělá to co naprogramujete, ne to co chcete...
NotBeginner
~ Anonymní uživatel
181 příspěvků
24. 11. 2013   #3
-
0
-

1) viz. KIIV ... v metodě

public static int vypocet(int pocetZapornych) .... si ji na řádku pocetZapornych = 0; ..... vynuluješ, tak se nediv že ti vyjde nula.

2) A teď to zásadní : vždyť je celý program totální nesmysl

chyba 1 .... kde načítáš celou posloupnost? Načítáš tam pouze 1 int. Kde je nějaké pole int, a cyklus ve kterém načítáš? Logika ukončení načítání by měla být na přečtení nulou. ( např. cyklus do { } while )

chyba 2 ....do metody porovnávání vkládáš počet záporných? Tam bys měl snad vkládat hodnotu načtenou, či pole načtených hodnot. Opět v cyklu a na základě toho zvýšíš hodnotu o 1.

PS. mě to připadá, jako bys nedokázal rozložit ten problém na jednotlivé subproblémy a ty z algorytmizovat.

Pozn. na nedělní ráno, je to pro mě docela likvidační, asi půjdu mlátit hlavou o stěnu, a ty hlavně se nad tím pořádně zamysli(nakresli si i vývojový diagram a věnuj tomu min. 7 hodin) a začni programovat od začátku.
 

Nahlásit jako SPAM
IP: 94.113.80.–
vasek.t0
Newbie
24. 11. 2013   #4
-
0
-

#3 NotBeginner
Ahoj díky za rady, ale nesmíme používat pole pro načtení čísel. Jak mám uložit tu řadu čísel, kterou pak budu testovat na to kolik je tam záporných?

Nahlásit jako SPAM
IP: 90.177.127.–
KIIV+42
God of flame
24. 11. 2013   #5
-
0
-

pole neni vubec potreba..  jak si to naznacil je to v pohode... jen odkomentovat to nacitani a tak...

zbavit se for cyklu a dat tam jak navrhoval NotBeginner do while

a pak samozrejme nekde taky nacitat

Nahlásit jako SPAM
IP: 93.91.152.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Řešení
vasek.t0
Newbie
24. 11. 2013   #6
-
0
-
Vyřešeno Nejlepší odpověď

díky za rady, ve škole všechno děláme přes for a pak je v tom akorát bordel. takhle to nakonec funguje

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);
    }
     
    
    
}
Nahlásit jako SPAM
IP: 90.177.127.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 26 hostů

Podobná vlákna

Vysledky zavodu — založil Cecilconrad

Vb kvíz výsledky — založil kuldaspunk

Formular s vysledky na mail — založil lalin

SQLite, kam ukládá výsledky ? — založil polonium

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý