[ Foro de Java ]

Ejercicio 8.1.3 Opiniones - Letras separadas por espacios

29-Mar-2014 14:02
Leonardo Teseyra
8 Respuestas

Hola gente! quería compartir  con ustedes como desarrolle este ejercicio y que ustedes hagan lo mismo como para saber de que otras maneras lo pudieron resolver, acá les dejo lo mio: (el enunciado decía así: Ejercicio propuesto 8.1.3: Crea un programa que te pida tu nombre y escriba las letras separadas por espacios. Por ejemplo, a partir de "Nacho" escribirá "N a c h o".)


public static void main(String[] args) {
		
		StringBuffer nombret;
		String nombre = null;
		
		byte i;
		int j;
		System.out.print( "Introduzca su nombre: " ); 
	    try { 
	      BufferedReader entrada = 
	        new BufferedReader(new InputStreamReader(System.in));   
	      nombre = entrada.readLine(); 
	    }
	    catch (IOException e) {}
	    nombret = new StringBuffer(nombre);
	    j=nombret.length();
	    for (i=1;i<=j*2;i+=2){
	    	
	    	nombret.insert(i, " ");
	    	
	    }
	    System.out.println(nombret);
	}

}


Saludos!


31-Mar-2014 00:16
Nacho Cabanes (+83)

Te estás complicando la vida innecesariamente. Nadie te dice que modifiques la cadena original, sólo que escribas las letras separadas por espacios. Basta con extraer las letras una a una usando un "for":


for (i=0;i<nombre.length();i++){
    System.out.print(nombre.CharAt(i));
    System.out.print(" ");
}



01-Apr-2014 05:12
Invitado (Alex)

Hola Nacho, este ejercicio me ha costado mucho, lo habia intentado como tu propones y no me convencia del resultado pues me arrojaba una excepcion al finalizar la ejecucion, espero me puedas ayudar, acontinuacion mi respuesta:


String nombre = "";
        int i;
        System.out.println("Introduzca su nombre: ");
        try{
            BufferedReader entrada = new BufferedReader(new InputStreamReader(System.in));
            nombre = entrada.readLine();
        }
        catch (IOException e){}
        
        for (i=0; i<=nombre.length(); i++){
            System.out.println(nombre.charAt(i));
            System.out.println(" ");
        }


El resultado es el siguiente:

Introduzca su nombre:
alex
a

l

e

x

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 4
at java.lang.String.charAt(String.java:646)
at cadenaconespacios.CadenaConEspacios.main(CadenaConEspacios.java:29)
Java Result: 1
BUILD SUCCESSFUL (total time: 2 seconds)


01-Apr-2014 11:43
Nacho Cabanes (+83)

El mensaje de error te dice lo que ocurre: estás desbordando la cadena. No debes ir hasta "length" sino hasta "length-1", de modo que tu "for" debería ser:


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


(Ten en cuenta que una cadena que tenga 10 letras irá desde la posición 0 hasta la 9).


01-Apr-2014 15:27
Leonardo Teseyra

Gracias Nacho!


01-Apr-2014 15:46
Leonardo Teseyra

Pero el nombre me sale así:

N

a

c

h

o

y no como especifica el enunciado :/


01-Apr-2014 15:48
Nacho Cabanes (+83)

Porque usas "println", que escribe y avanza de línea, en vez de "print", que sólo escribe, sin avanzar de línea.


01-Apr-2014 18:25
Invitado (Alex)

Muchas gracias Nacho, ahora lo entiendo, tu curso me gusta mucho, voy entendiendo cosas que antes me parecian complicadas.


02-Apr-2014 15:27
Nacho Cabanes (+83)

Pues ya sabes... a seguir practicando... y a seguir preguntando cuando lo necesites.  ;-)






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)