Número Digito e aparecer tela número separado [não funciona]

5 respostas
jsnpereira

Olá, pessoal!

Estou treinando a programar a java no livro “Java - Como programar”
Quando digito na tela e depois aparece na tela número separado, por exemplo:

número digitado
12345

aparece na tela número serparado
1 2 3 4 5

veja os código

public class Exe2_30 {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		Scanner sca = new Scanner(System.in);
		
		System.out.println("Digita os números");
		String num = sca.nextLine();
		
		int[] separa = new int[num.length()];
		
		for(int i=0; i<=num.length(); i++){
			
			separa[i] = (int) num.charAt(i);
		}
		
		for(int a=0; a<=num.length();a++){
			if(num.length()%2==1){
				System.out.print(separa[a]);
			} else {
				System.out.print(" ");
			}
		}
	}
}

Esse código teu problemas conversão e não funcionou a programar, meio complicado… alguém pode me dicas sobre conversão as variáveis.

separa[i] = (int) num.charAt(i);

Espero que vocês me ajudem

5 Respostas

AlexandreGama

Olá jsnpereira!

Só de bater o olho você terá uma exceção de índice nesta linha

for(int i=0; i<=num.length(); i++){

E nesta linha:

for(int a=0; a<=num.length();a++){

Já ajuda um pouco?
Se encontrar problemas com a implementação é só enviar.

Abraços!

jsnpereira

AlexandreGama:
Olá jsnpereira!

Só de bater o olho você terá uma exceção de índice nesta linha

for(int i=0; i<=num.length(); i++){

E nesta linha:

for(int a=0; a<=num.length();a++){

Já ajuda um pouco?
Se encontrar problemas com a implementação é só enviar.

Abraços!

Alexandre,

Já encontrei que você diz, arrumei alguns… Mas…

olha! esse código que ocorreu a problemas é

separa[i] = (int) num.charAt(i);

mensagem de erro

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 5
	at java.lang.String.charAt(Unknown Source)
	at Exe2_30.main(Exe2_30.java:24)
AlexandreGama

jsnpereira,

Creio que essa mensagem de erro seja exatamente por essas duas linhas estarem assim.
Tente modificar para:

for(int i=0; i < num.length(); i++){

E a outra para

for(int a=0; a < num.length();a++){

Ou seja, somente com < e não com <=

Pelo menos este problema deve ser resolvido.

Até mais!

AlexandreGama

Só explicando um pouco melhor (caso você fique com dúvidas):

Quando você percorre uma String, imagine que você está percorrendo um Array de caracteres.
Se você tem a String:

Alexandre então ela começará com o índice “0”, ou seja,

Letra A = indice 0 d oarray
Letra L = indice 1 do array
Letra E = indice 2 do array
.
.
.

Quando você faz o for, você percorre do índice “0” (primeira) letra ao índice “Tamanho total - 1”
pois o seu índice está começando com zero e não com um.
Assim, quando você faz

i <= num.length()

Com o igual =, você acaba tentando acessar um índice inexistente, daí o erro StringIndexOutOfBoundsException.

Abraços!

jsnpereira

AlexandreGama:
jsnpereira,

Creio que essa mensagem de erro seja exatamente por essas duas linhas estarem assim.
Tente modificar para:

for(int i=0; i < num.length(); i++){

E a outra para

for(int a=0; a < num.length();a++){

Ou seja, somente com < e não com <=

Pelo menos este problema deve ser resolvido.

Até mais!

Alexandre,

Desculpa, você tem razão, já consegui… mas seguinte tem outro problemas novamente :cry:

esse código ocorreu problemas, é simples.

System.out.print(separa[a]);

Mensagem de erro

4950525153Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
	at Exe2_30.main(Exe2_30.java:29)
Criado 21 de outubro de 2010
Ultima resposta 21 de out. de 2010
Respostas 5
Participantes 2