Kontrola správnosti DIC – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Kontrola správnosti DIC – Java – Fórum – Programujte.comKontrola správnosti DIC – Java – Fórum – Programujte.com

 

Ondra
~ Anonymní uživatel
244 příspěvků
13. 1. 2017   #1
-
0
-

Ahoj, potřeboval bych pomoct, mám zadání úlohy na kontrolu DIC s následujícími podmínkami. 1) první dva znaky stringu musí být rovna "CZ" nebo "cz" 2) prvních devět čísel stringu se má vydělit 11ti 3) pokud je zbytek roven 10, poslední číslo ve stringu musí bý nula, pokud zbytek není deset, poslední číslo se musí rovnat tomu zbytku. Celé DIČ obsahuje vždy 12 znaků. Napadlo mě to naprogramovat takto: 

public static void checkDIC(String s){
        boolean cz = false;
        boolean posledninula = false;
        boolean poslednicislo = false;
        String zkratka = s.substring(0,2);
        String cislo = s.substring(2,11);
        String nula = s.substring(11);
        if(zkratka == "CZ" || zkratka == "cz"){
            cz = true;
        }
        int zbytek = Integer.parseInt(s.substring(2,11)) % 11;
        if(zbytek == 10 && nula == "0"){
            posledninula = true;
        }else{
            if(nula == Integer.toString(zbytek)){
                poslednicislo = true;
            }
        }
        if((cz == true && posledninula == true) || (cz == true && poslednicislo == true)){
            System.out.println("DIČ je platné");
        }else{
            System.out.println("DIČ je neplatné");
        }
    }

Problém je ten, že se mi boolean hodnoty nikdy nezmění na true a ať zadám jakékoli hodnoty, vždycky se mi vrátí zpět false u všech booleanů, tudíž, že je DIČ neplatné. Nemohl by mi někdo poradit, jak to zprovoznit? Mě nenapadá jiný způsob než tenhle. Platné DIČ je například CZ7801233540. 

Nahlásit jako SPAM
IP: 2a00:1028:96d2:3baa:749a:...–
Kit+15
Guru
13. 1. 2017   #2
-
0
-

#1 Ondra
Hlavně bych se zbavil všech proměnných typu boolean, protože to děsně zamlžují.

Vypiš si hodnoty všech stringů a výsledek konverze na int včetně %11. Pak na to určitě přijdeš.

Nakonec se zbav těch println() na konci. Do metod se to nedává, protože to má postranní efekty. Stačí, když ti metoda bude vracet boolean, ne?

Nahlásit jako SPAM
IP: 194.228.13.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Kit+15
Guru
13. 1. 2017   #3
-
0
-

#1 Ondra
Už to vidím: Chybně porovnáváš stringy. Tohle mi funguje: 

public static boolean check(String s) {
    String zkratka = s.substring(0,2);
    String cislo = s.substring(2,11);
    String nula = s.substring(11);
    if (!zkratka.equals("CZ") && !zkratka.equals("cz")) {
        return false;
    }
    int zbytek = Integer.parseInt(s.substring(2,11)) % 11;
    if (zbytek == 10 && nula.equals("0")) {
        return true;
    }
    if (nula.equals(Integer.toString(zbytek))) {
        return true;
    }
    return false;
}
Nahlásit jako SPAM
IP: 194.228.13.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Ondra
~ Anonymní uživatel
244 příspěvků
13. 1. 2017   #4
-
0
-

Super, už mi to taky běhá správně, děkuju moc za pomoc, zachránil jsi mě.

Nahlásit jako SPAM
IP: 2a00:1028:96d2:3baa:4814:...–
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, 8 hostů

Podobná vlákna

Kontrola HW — založil Petr

Kontrola — založil jiri.free

Kontrola id — založil Majox

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ý