Java - absurdny problem

Programovacie jazyky, rady, poradňa...
Dieg0
Guru wannabe
Guru wannabe
Príspevky: 2350
Registrovaný: 16 nov 2006, 14:48
Bydlisko: Liptovský Mikuláš

Java - absurdny problem

Príspevok od používateľa Dieg0 »

Zdravíčko.Mám do školy napísať program ktorý bude mať ako vstup 3ciferné číslo a na výstupe mi má výjsť jeho slovné vyjadrenie.Trebárs keď zadám 354 tak to prevedie na Tristopadesiatštyri.Mám pocit, že by to ako tak mohlo byť v pohode ale mám problém že cyklus mi nezoberie switch.Proste prejde to System.out.println ale ďalej na switch už nepokračuje ale vykonáva cyklus odznovu.Vedeli by ste mi prosím niekto pomocť?

Kód: Vybrať všetko

package ukol;
import java.util.Scanner;

public class Ukol {

    public static String IntToString(int x) {
        return Integer.toString(x);
    }

    public static void main(String[] args) {
        Scanner scn = new Scanner(System.in);
        int a;
        System.out.println("Zadaj trojciferné číslo");

        a = scn.nextInt();
        String slovo = IntToString(a);
        char[] pole = new char[3];
        pole = slovo.toCharArray();

        for (int i = 0; i < pole.length; i++) {
            System.out.println(pole[i]);
           

        switch (pole[i]) {
            case 1:
                System.out.println("Jeden");
            case 2:
                System.out.println("Dva");
            case 3:
                System.out.println("Tri");
            case 4:
                System.out.println("Styri");
            case 5:
                System.out.println("Pať");
            case 6:
                System.out.println("Šesť");
            case 7:
                System.out.println("Sedem");
            case 8:
                System.out.println("Osem");
            case 9:
                System.out.println("Devať");


        }

    }
}
}

intelygent
Light Expert
Light Expert
Používateľov profilový obrázok
Príspevky: 55
Registrovaný: 04 feb 2007, 20:43

Re: Java - absurdny problem

Príspevok od používateľa intelygent »

ked chces porovnavat char musis ho dat do uvodzoviek takze

Kód: Vybrať všetko

            case '1':
                System.out.println("Jeden");
            case '2':
                System.out.println("Dva");
            ...
dalej za kazdym case musis davat break pokial nechces aby ti nepreslo vsetky ostatne prikazy.
a dobre by bolo davat aj default do switchu.
Zappir
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 498
Registrovaný: 17 aug 2008, 9:38
Bydlisko: Praha / Prievidza

Re: Java - absurdny problem

Príspevok od používateľa Zappir »

Kód: Vybrať všetko

switch (pole[i]) {
            case '1':
                System.out.println("Jeden");break;..
doplnene '1'.. a break

je to cele take.. ale malo by to fungovat

//predbehli ma :(
weroro
Flash coder
Flash coder
Používateľov profilový obrázok
Príspevky: 3206
Registrovaný: 14 feb 2009, 22:34
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Java - absurdny problem

Príspevok od používateľa weroro »

Je potrebné volať System.out.println() zakaždým? Nie je lepšie radšej meniť obsah premennej a zavolať System.out.println(premenna) až keď sa ukončí switch?
Dieg0
Guru wannabe
Guru wannabe
Príspevky: 2350
Registrovaný: 16 nov 2006, 14:48
Bydlisko: Liptovský Mikuláš

Re: Java - absurdny problem

Príspevok od používateľa Dieg0 »

Ďakujem za rady chlapci.A weroro premýšlam nad tým čo vravíš ale neviem to poriadne zrealizovať.V jave robím zatiaľ necelé 4 dni
weroro
Flash coder
Flash coder
Používateľov profilový obrázok
Príspevky: 3206
Registrovaný: 14 feb 2009, 22:34
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Java - absurdny problem

Príspevok od používateľa weroro »

Možno to napíšem blbo (JAVU som nikdy neskúsil) ale teoreticky:

Kód: Vybrať všetko

String premenna;

    switch (pole[i]) {
            case '1':
                premenna = "jedna";
                Break;
            case '2':
                premenna = "dva";
                Break;
            case '3':
                premenna = "tri";
                Break;
            case '4':
                premenna = "štyri";
                Break;
            case '5':
                premenna = "päť";
                Break;
            case '6':
                premenna = "šesť";
                Break;
            case '7':
                premenna = "sedem";
                Break;
            case '8':
                premenna = "osem";
                Break;
            case '9':
                premenna = "deväť";
                Break;
        }

                System.out.println(premenna);
Viper
Medium Expert
Medium Expert
Používateľov profilový obrázok
Príspevky: 137
Registrovaný: 14 mar 2012, 13:19

Re: Java - absurdny problem

Príspevok od používateľa Viper »

Diego používaj break;
A weroro to je to jedno pretože to aj tak vypíše len raz v 1 switch a ani si nejako podstatne neušetríš klavesnicu ani nic podobné a neviem ako si to presne myslel ale v tom priklade tam nemáš for no a keby bolo to println až po for slučke tak by to nešlo pretože by sa stratili tie staré jedine keby používal premena +=...
Dieg0
Guru wannabe
Guru wannabe
Príspevky: 2350
Registrovaný: 16 nov 2006, 14:48
Bydlisko: Liptovský Mikuláš

Re: Java - absurdny problem

Príspevok od používateľa Dieg0 »

Skúste mi ešte prosím pomocť.Problém som z časti vyriešil.Nastavil som Switch pre pole[0] pre hodnoty Sto, Dvesto, Tristo ...
Switch pre pole[1] som nastavil pre hodnoty Desať, Dvadsať, Tridsať, Štyridsat ...
Switch pre pole[2] som nastavil pre hodnoty Jeden, Dva, Tri, Štyri

Z toho vyplýva, že akákoľvek hodnota v rozmedzí 100-999 bude vyhodnotená správne (145 - Sto, Štyridsať, Pať; 937 - Devaťsto, Tridsať, Sedem).Ale mám veľký problém.Neviem ako naloži s číslami 11 až 19.Program dokáže vylpuť akékoľvek číslo ale čokoľvek čo sa končí na 11 až 19 to nie.Vedeli by ste mi prosím pomocť?Prikladám kód

Kód: Vybrať všetko

package ukol;
import java.util.Scanner;

public class Ukol {

    public static String IntToString(int x) {
        return Integer.toString(x);
    }

    public static void main(String[] args) {
        Scanner scn = new Scanner(System.in);
        int a;
                System.out.println("Zadaj trojciferné číslo");

        a = scn.nextInt();
        String slovo = IntToString(a);
        char[] pole = new char[3];
        pole = slovo.toCharArray();
 
        switch (pole[0]) {
            case '1':
                System.out.println("Sto");;
                break;
            case '2':
                System.out.println("Dvesto");
                break;
            case '3':
                System.out.println("Tristo");
                break;
            case '4':
                System.out.println("Styristo");
                break;
            case '5':
                System.out.println("Paťsto");
                break; 
            case '6':
                System.out.println("Šesťsto");
                break;
            case '7':
                System.out.println("Sedemsto");
                break;
            case '8':
                System.out.println("Osemsto");
                break;
            case '9':
                System.out.println("Devaťsto");
                break;
             }
        
       
        switch (pole[1]) {
            case '1':
                System.out.println("Desať");
                break;
            case '2':
                System.out.println("Dvadsať");
                break;
            case '3':
                System.out.println("Tridsa");
                break;
            case '4':
                System.out.println("Styridsať");
                break;
            case '5':
                System.out.println("Paťdesiat");
                break; 
            case '6':
                System.out.println("Šesťdesiat");
                break;
            case '7':
                System.out.println("Sedemdesiat");
                break;
            case '8':
                System.out.println("Osemdesiat");
                break;
            case '9':
                System.out.println("Devadesiat");
                break;
            case '0':
                System.out.println("");
            }
        
        switch (pole[2]) {
            case '1':
                System.out.println("Jeden");
                break;
            case '2':
                System.out.println("Dva");
                break;
            case '3':
                System.out.println("Tri");
                break;
            case '4':
                System.out.println("Styri");
                break;
            case '5':
                System.out.println("Pať");
                break; 
            case '6':
                System.out.println("Šesť");
                break;
            case '7':
                System.out.println("Sedem");
                break;
            case '8':
                System.out.println("Osem");
                break;
            case '9':
                System.out.println("Devať");
                break;
            case '0':
                System.out.println();
                         
            
                }
}

        

    

Zappir
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 498
Registrovaný: 17 aug 2008, 9:38
Bydlisko: Praha / Prievidza

Re: Java - absurdny problem

Príspevok od používateľa Zappir »

Kód: Vybrať všetko

..
Scanner scn = new Scanner(System.in);

        System.out.println("Zadaj trojciferné číslo");



        int cislo = scn.nextInt();
        String cis = ""+cislo;
        
        if(cis.length()<3)
        	cis="0"+cis;
        if(cis.length()<3)
        	cis="0"+cis;
        
        char[] pole = new char[3];

        pole[0] = cis.charAt(0);
        pole[1] = cis.charAt(1);
        pole[2] = cis.charAt(2);
..
Napísať odpoveď