Muutetaan sana luvuksi. Ensin lasketaan kymmenet ja sitten ykköset tai sitten luku 11-19 välillä. Ohjelma toimii luvuilla 1-99.
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);
}
}Aihe on jo aika vanha, joten et voi enää vastata siihen.