Jednoduchá nefunkční metoda v Javě – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Jednoduchá nefunkční metoda v Javě – Java – Fórum – Programujte.comJednoduchá nefunkční metoda v Javě – Java – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Milan800
Duch
16. 7. 2012   #1
-
0
-

Ahoj, mohl by mi někdo poradit, proč následující metoda navrací hodnotu "0.00" a ne "0.7"?

DIKY MOC! MILAN

class metoda1_104 {
   public static void main (String arg[]) {
      float a;
      int b = 70, c = 100;
      a = vypocetHodnoceni (b, c);
      System.out.println ("Hodnoceni testu je: " + a);
   }
   static float vypocetHodnoceni (int spravneOdpovedi, int pocetOtazekTestu)
   {
      return (spravneOdpovedi / pocetOtazekTestu) * 100;
   }
}

Nahlásit jako SPAM
IP: 84.246.161.–
Reklama
Reklama
vlado09910
Návštěvník
16. 7. 2012   #2
-
0
-

Skusim teda: tie 2 hodnoty su int (Integer) a ten moze byt len 0 alebo 1 - proste cele cislo

podelil to  a vysledok 0,7 dal vypisat 0.. (keby bol podiel 1,7 tak ti vypise 1)

riesenie: definovat premenne ako float b = 70f, c = 100f;

alebo upravit samotny vypocet (pretypovat integery na float):

return (((float)spravneOdpovedi / (float)pocetOtazekTestu) * 100);

Nahlásit jako SPAM
IP: 62.168.64.–
Milan800
Duch
16. 7. 2012   #3
-
0
-

#2 vlado0991
Perfekt, máš pravdu, stačilo nahradit "int" floatem  a už to funguje, jak jsem chtěl, díky moc! :)

Nahlásit jako SPAM
IP: 84.246.161.–
xxx
~ Anonymní uživatel
54 příspěvků
17. 7. 2012   #4
-
0
-

#1 Milan80
class Test {
    public static void main (String arg[]) {
       float a;
       int b = 70, c = 100;
       a = vypocetHodnoceni (b, c);
       System.out.println ("Hodnoceni testu je: " + a);
    }
    static float vypocetHodnoceni (float spravneOdpovedi, float pocetOtazekTestu)
    {
       return (spravneOdpovedi / pocetOtazekTestu);
    }
}

vstup do metody dej float.

Nahlásit jako SPAM
IP: 213.220.199.–
johhan
~ Anonymní uživatel
1 příspěvek
3. 8. 2012   #5
-
0
-

#1 Milan80

return (100 * spravneOdpovedi / pocetOtazekTestu);

Nahlásit jako SPAM
IP: 88.100.130.–
sleepy0
Stálý člen
3. 8. 2012   #6
-
0
-

#5 johhan
to ti nepomoze znova ti to vrati v tvare int ... . Cize ked budes mat 3 otazkovy a 2 spravne tak budes mat 66.0% aj ked by si odcakaval 66.66666% co by mala byt aj spravna odpoved. Vhodne je este pred samotnou operaciu delenia mat aspon jednu z hodnot ulozenu ako float.

...
public static float vypocetHodnotenia(ina pocetOtazok, int pocetSpravnychOdpovedi){
	return (float) pocetSpravnychOdpovedi / pocetOtazok * 100; // Som jave povedal ze si ma premennu ulozit ako float a tak sa k nej spravat
}
...
// pripadne sa to da aj
public static float vypocetHodnotenia(ina pocetOtazok, int pocetSpravnychOdpovedi){
	return 100. * pocetSpravnychOdpovedi / pocetOtazok; // tu si znova medzivypocet 100. * pocetSpravnychOdpovedi ulozit ako float a potom znova deli float integerom co si ulozi ako float
}
Nahlásit jako SPAM
IP: 213.215.67.–
Antilles0
Stálý člen
4. 8. 2012   #7
-
0
-

Ikdyž byl problém vyřešen, dovolím si malou vsuvku.

To, na co jsi narazil se jmenuje rozdíl celočíselného a reálného dělení. Vychází to z toho, že podílem dvou celých čísel je opět celé číslo, respektive tedy celá část toho reálného čísla, které by vyplivla kalkulačka. Kdy je výsledek celočíselný a kdy reálný (záleží na typu parametrů) určitě zvládneš vygooglit, a dozvíš se i proč přesně tomu tak je.

To já jen tak pro doplnění, o čem se tu vlastně bavíme :-).

Nahlásit jako SPAM
IP: 77.48.30.–
Dejte mi flétnu a já budu hrát, dejte mi Javu a já budu psát.
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, 31 hostů

Podobná vlákna

Jednoducha databaze — založil Pavel

Jednoducha uloha — založil Trebor

Jednoduchá aplikace. — založil Morpheus

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ý