Iniciante em programação

Ola,

Estou com duvidas do porque meu código não retorna o numero por extenso, segue:

public static void main(String[] args) {
int num;
String ext[];
String conv;
ext = new String[10];
ext [0] = “zero”; ext [1] = “um”; ext [2] = “dois”; ext [3] = “tres”;
ext [4] = “quatro”; ext [5] = “cinco”; ext [6] = “seis”; ext [7] = “sete”;
ext [8] = “oito”; ext [9] = “nove”;
Scanner sc = new Scanner (System.in);
System.out.println("Digite um numero: ");
num = sc.nextInt();
conv = Integer.toString(num);

    System.out.println("O número digitado foi: " +ext[num]);

… Se eu digito qualquer numero de 0 a 9 - o resultado sai OK (“tres” por exemplo), mas se eu digito numeros com mais de uma unidade (“12”) deveria retornar (“um, dois”), mas retorna erro:

“Digite um numero:
12
Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 12
at lista5.Lista5.main(Lista5.java:18)
C:\Users\eljunior\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 4 seconds)”

Agradeço desde ja a atenção da galera do GUJ. Abraço a todos.

O que acontece é que você tem um array de 10 posições (0 a 9) e não está tratando a entrada de maneira adequada, de maneira que você lê um número com todos os seus dígitos e não as posições distintas, como acredita que está fazendo.
Você precisa pegar toda e qualquer entrada com mais de uma “casa” e quebrar em quantas “casas” forem os dígitos daquele número inserido.
Exemplo:
Usuário digita 322. Você precisa quebrar isso em três partes: 3, 2 e 2
Após isso, você precisa “andar” em cada casa e obter o valor referente à cada uma, por extenso.

Obrigado pela rápida respota!
O ideal é usar um “for” pra isso ?

A primeira coisa é quebrar a entrada.
Aí, sim, um loop

1 curtida

Fiz umas consultas pelo google mas, não consigo entender como fazer a quebra das entradas. Indica alguma fonte de pesquisa ?

Olha, uma das opções é transformar a entrada em um array de chars, para isso, primeiro altere a leitura dos valores para:

String insert = sc.nextLine();
char[] entrada = insert.toCharArray();

Após isso, você pode iterar sobre cada elemento

for(int i = 0; i < entrada.length; i++) {
    //Fazer o que precisa aqui
}