[ Foro de Java ]

Ejercicio 7.07 de repaso

29-Jun-2011 17:33
David Nuñez
3 Respuestas

Hola Nacho, estoy haciendo los ejercicios del tema 7d y aunque el resultado es correcto, tengo muchas dudas respecto a este ejercicio (7.07), no se si tu lo hubieras hecho así:


/* -------------------------------------------------------- *
 * Introducción a Java - Ejercicio de repaso 7.07: Crear un *
 * programa que muestre las letras de la Z (mayúscula) a la *
 * A (mayúscula, descendiendo).                             *
 * Por David Nuñez, Ejercicio 7.07                          *
 * -------------------------------------------------------- *
 *  Fichero: AlfabetoReves.java                             *
 *----------------------------------------------------------*/
class AlfabetoReves{
	public static void main(String args[]){
		char[] alfabeto = new char[26];
		alfabeto[0]='A';
		System.out.print("El alfabeto ordenado en mayusculas es: "+alfabeto[0]+",");
		for(int i=1;i<26;i++)
		{
			alfabeto[i]=(char)('A'+i);
			System.out.print(alfabeto[i]+",");
		}
		System.out.println();
		System.out.println("El alfabeto de la Z a la A es: ");
		for(int j=25;j>=0;j--)
			System.out.print(alfabeto[j]+",");
	}
}



Lo primero que me gustaría saber es si no hay alguna forma para no tener que poner el numero 26 en la linea:
char[] alfabeto = new char[26];
no soy capaz de hacerlo sin poner ningún numero, no tengo porque saber cuantas letras tiene el alfabeto, no?<br /><br />

Tampoco entiendo porque a la A le sumo 1 y me da la B???<br /><br />
supongo que no lo interpreta como una letra sino como un codigo, no?<br /><br />

No se si hay alguna funcion para que me invierta el alfabeto sin necesidad de usar un for.<br /><br />

Bueno muchas gracias Nacho


30-Jun-2011 13:17
Nacho Cabanes (+83)

¿No sería más sencillo así?

for(char letra = 'Z' ; letra >= 'A' ; letra--)
 System.out.print(letra);
}

En cuanto a por qué si sumas 1 a la A, obtienes la B, tendrás que investigar un poquito sobre el código ASCII...  ;-D



30-Jun-2011 16:04
David Nuñez

Es verdad no se me había ocurrido, así es más sencillo.

Ok, investigare sobre el código ASCII; pero como puedo reservar memoría si saber previamente la memoria que necesito? te ponía el ejemplo del alfabeto:
char[] alfabeto = new char[26];
aquí reservo para 26 posiciones en mi array, pero si no se cuantas voy a necesitar, como lo hago?

Gracias Nacho


03-Jul-2011 11:45
Nacho Cabanes (+83)

Es que, por definición, un "array" es una estructura estática, cuyo tamaño no cambia, por lo que tienes que saber el tamaño cuando creas el programa (Java permite que sea también en tiempo de ejecución, pero siempre antes de usarlo).

Si quieres guardar una cantidad de datos desconocida, y que puede aumentar o disminuir, la solución es no usar una estructura estática (como un array), sino una dinámica (en Java tienes algunas predefinidas y fáciles de manejar, como los ArrayList).






(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.)