Metoda vracející desetinnou část – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Metoda vracející desetinnou část – Java – Fórum – Programujte.comMetoda vracející desetinnou část – Java – Fórum – Programujte.com

 

Bára
~ Anonymní uživatel
21 příspěvků
30. 11. 2015   #1
-
0
-

Dobrý den, mám za ukol program obsahujcí metodu, která přečte reálné číslo a do celočíselné proměnné uloží desetinnou část. Vstupními parametry metody má být reálné číslo (typ double nebo float) a počet desetinných míst ukládané číselné hodnoty. Výstupem má být celé číslo obsahující pouze desetinnou část reálného čísla. např. cislo=81,236 n=2  pak výsledek ma být 23

Začínám být zoufalá, děkuji za případné rady :)

Zde je můj pokus,  zřejmě nedochází k provádění cyklu a pomocná proměná zustáva 0

public class Du {
    public static void main(String[] args) {
        Scanner cti = new Scanner(System.in);
        System.out.print("zadejte cislo: ");
        double cislo = cti.nextDouble();
        int vysledek = desCast(cislo,2);        // obecně samozřejmě desCast(cislo,proměna)
        System.out.println("vysledek: "+vysledek);
        
    }


    public static int desCast(double a,int n){
        String retezec = new String();
        retezec = String.valueOf(a);
        int pomocna = 0;
        for(int i=0; i == (retezec.length()-1); i++){
            char z=retezec.charAt(i);
            if (z == '.') pomocna=i;
        }
        String podretezec = retezec.substring(pomocna,pomocna+2);    

       // ? obecně substring(pomocna,pomocna+n) ?

        int b = Integer.valueOf(podretezec);
        return b;   
    }

}

Nahlásit jako SPAM
IP: 89.203.142.–
NotBeginner
~ Anonymní uživatel
185 příspěvků
1. 12. 2015   #2
-
0
-

1) Použij ve stringu metodu split a parameter dej desetino tečku nebo čárku, nebo obojí

- výsledkem je pole Stringu o dvou prvcích v jehož prvním prvku je část před desetinou tečkou a v druhém prvku je část za desetinou tečkou

2) druhý prvek stringového pole převedeš na integer a to je hodnota návratového typu.

OK?

Nahlásit jako SPAM
IP: 217.112.161.–
NotBeginner
~ Anonymní uživatel
185 příspěvků
1. 12. 2015   #3
-
0
-

Sorry nedočetl jsem to celé.

1) Použij ve stringu metodu split a parameter dej desetino tečku nebo čárku, nebo obojí

- výsledkem je pole Stringu o dvou prvcích v jehož prvním prvku je část před desetinou tečkou a v druhém prvku je část za desetinou tečkou

2) za pomoci substringu vytvoř z druhého prveku stringového pole nový string který bude mít počet znaků dle definovaného zádání z parametru metody

3) a ten nový string převedeš na integer a to je hodnota návratového typu tvé hlavní metody.

OK?

Nahlásit jako SPAM
IP: 217.112.161.–
ondrej39+1
Věrný člen
1. 12. 2015   #4
-
+1
-
Zajímavé

#1 Bára
Na toto vůbec nepotřebuješ parsování stringu, stačí přetypování a jednoduchá matematika. Výsledek může vypadat nějak takhle:

public static int desCast(double a, int n)
{
    return (int) ((a - (int) a) * Math.pow(10, n));
}

kde a je zadávané číslo s proměnnou desetinnou čárkou a n je počet desetinných míst, které chceš vypsat. A celou metodu máš na jeden řádek.

Nahlásit jako SPAM
IP: 79.141.243.–
Inject all the dependencies!
Bára
~ Anonymní uživatel
21 příspěvků
1. 12. 2015   #5
-
0
-

Děkuji za pomoc, vyzkoušela jsem obojí. Ten "matemacký" algoritmus je super, že mě to nenapadlo!

Nahlásit jako SPAM
IP: 89.203.142.–
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, 33 hostů

Moderátoři diskuze

 

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