Iniciante em programação

5 respostas
sintaxestringjava
E

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 (<a href="http://System.in">System.in</a>);

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.

5 Respostas

D

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.

E

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

D

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

E

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

D

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
}
Criado 10 de setembro de 2018
Ultima resposta 10 de set. de 2018
Respostas 5
Participantes 2