Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: Java: Sana luvuksi

JRokka [09.11.2019 22:01:47]

#

Muutetaan sana luvuksi. Ensin lasketaan kymmenet ja sitten ykköset tai sitten luku 11-19 välillä. Ohjelma toimii luvuilla 1-99.

Koodi

import java.util.Scanner;

public class Sana_luvuksi {
    public static void main(String[] args){
        Scanner syote = new Scanner(System.in);
        String sana = "";
        int luku = 0;
        int[] kymmenet = {90,80,70,60,50,40,30,20,10};
        int[] toista = {19,18,17,16,15,14,13,12,11};
        int[] ykkoset = {9,8,7,6,5,4,3,2,1};
        int indeksi = 0;
        String kymmenetSana[] = {"yhdeksankymmenta","kahdeksankymmenta","seitsemankymmenta","kuusikymmenta","viisikymmenta","neljakymmenta","kolmekymmenta","kaksikymmenta","kymmenen"};
        String toistaSana[] = {"yhdeksantoista","kahdeksantoista","seitsemantoista","kuusitoista","viisitoista","neljatoista","kolmetoista","kaksitoista","yksitoista"};
        String ykkosetSana[] = {"yhdeksan","kahdeksan","seitseman","kuusi","viisi","nelja","kolme","kaksi","yksi"};
        //Muutetaan sana luvuksi.
        System.out.println("Syötä luku sanamuodossa.");
        sana = syote.next();
        //Lasketaan ensin kymmenet, koska kymmenet tulevat ennen ykköstä.
        //Yksitoista, kaksitoista lasketaan erikseen, koska se toimii eri logiikalla.
        for (int x = 0; x < kymmenet.length; x++){
            if (sana.contains(kymmenetSana[x])){
                //Löydettin kymmenen lisätään se lukuun.
                luku += kymmenet[x];
                indeksi = kymmenetSana[x].length(); //Siirrytään indeksissä ykköseen.
                //Kun siirrytään indeksissä eteenpäin vältetään luvun laskemista kahteen kertaan.
            }
        }
        //Lasketaan yksitoista, kaksitoista ja jne.
        for (int x = 0; x < toista.length; x++){
            if (sana.contains(toistaSana[x])){
                //Löydettin toista lisätään se lukuun.
                luku += toista[x];
                indeksi = toistaSana[x].length();
                //Kun siirrytään indeksissä eteenpäin vältetään luvun laskemista kahteen kertaan.
            }
        }
        //Lasketaan ykköset.
        for (int x = 0; x < ykkoset.length; x++){
            if (sana.indexOf(ykkosetSana[x],indeksi) != -1){
                //Löydettin ykkönen lisätään se lukuun.
                luku += ykkoset[x];
            }
        }
        //Näytetään tulos.
        System.out.println(luku);
    }
}

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta