Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
- package suomeksi;
- import java.util.Arrays;
- import java.util.List;
- /**
- *
- * @author avihavai
- */
- public class LuvutSuomeksi {
- public static String annaLukuSuomeksi(int luku) {
- if (luku == 0) {
- return "nolla";
- }
- return lukuSuomeksi(luku);
- }
- public static String lukuSuomeksi(int luku) {
- if (luku > 0 && luku <= 20) {
- return Luvut.annaLuku(luku);
- } else if (luku > 20) {
- return annaLukuOsina(luku, Kokoluokka.annaLuvunKokoluokka(luku));
- }
- return "";
- }
- private static String annaLukuOsina(int luku, int suuruusluokka) {
- String pienemmatMerkitsevat = "";
- if (luku % suuruusluokka != 0) {
- pienemmatMerkitsevat = lukuSuomeksi(luku % suuruusluokka);
- }
- String suurimmatMerkitsevat = "";
- if (luku >= 2 * suuruusluokka) {
- // luvulla useampi suurin merkitsevä
- suurimmatMerkitsevat = lukuSuomeksi(luku / suuruusluokka);
- }
- return suurimmatMerkitsevat
- + Kokoluokka.annaLukusana(luku)
- + pienemmatMerkitsevat;
- }
- public static void main(String[] args) {
- System.out.println(annaLukuSuomeksi(1342));
- System.out.println(annaLukuSuomeksi(1413342));
- System.out.println(annaLukuSuomeksi(1211413342));
- }
- }
- enum Kokoluokka {
- // tänne voi lisäillä näitä.
- MILJARDI("miljardi", "miljardia", 1000000000),
- MILJOONA("miljoona", "miljoonaa", 1000000),
- TUHAT("tuhat", "tuhatta", 1000),
- SATA("sata", "sataa", 100),
- KYMMENEN("kymmenen", "kymmentä", 10);
- private Kokoluokka(String yksikko, String monikko, int kokoluokka) {
- this.yksikko = yksikko;
- this.monikko = monikko;
- this.kokoluokka = kokoluokka;
- }
- private String yksikko;
- private String monikko;
- private int kokoluokka;
- public static int annaLuvunKokoluokka(int luku) {
- for (Kokoluokka luokka : values()) {
- if (luku >= luokka.kokoluokka) {
- return luokka.kokoluokka;
- }
- }
- return 1;
- }
- public static String annaLukusana(int luku) {
- for (Kokoluokka luokka : values()) {
- if (luku >= luokka.kokoluokka * 2) {
- return luokka.monikko;
- }
- if (luku >= luokka.kokoluokka) {
- return luokka.yksikko;
- }
- }
- return Luvut.annaLuku(luku);
- }
- }
- class Luvut {
- static List<String> PIKKULUVUT_SANOIN = Arrays.asList(
- "nolla", "yksi", "kaksi", "kolme", "neljä", "viisi",
- "kuusi", "seitsemän", "kahdeksan", "yhdeksän", "kymmenen");
- public static String annaLuku(int arvo) {
- if (arvo == 20) {
- return "kaksikymmentä";
- }
- String yliKymmenen = "";
- if (arvo > 10) {
- yliKymmenen = "toista";
- arvo = arvo - 10;
- }
- return PIKKULUVUT_SANOIN.get(arvo) + yliKymmenen;
- }
- }
Add Comment
Please, Sign In to add comment