Foros del Web » Programación para mayores de 30 ;) » Java »

Letra aleatoria

Estas en el tema de Letra aleatoria en el foro de Java en Foros del Web. En mi libro de programación me sale el siguiente ejemplo: Código: class Test { public static char getLetras() { return (char) (Math.random()*26 + 'a'); } ...
  #1 (permalink)  
Antiguo 03/10/2011, 16:40
 
Fecha de Ingreso: mayo-2010
Mensajes: 30
Antigüedad: 14 años, 6 meses
Puntos: 0
Letra aleatoria

En mi libro de programación me sale el siguiente ejemplo:

Código:
class Test {
	public static char getLetras() {
		return (char) (Math.random()*26 + 'a');
	}
	public static void main(String[] args) {
		System.out.println(getLetras());
		System.out.println(getLetras());
		System.out.println(getLetras());
	}
   
}
No entiendo del todo lo que hace la clase Test. Imagino que "return (char)" lo que hace es devolver un carácter. Luego "Math.random()*26" devuelve un número entre el 0 y el 26, que serían todas las letras del abecedario. Pero luego la duda me llega con el "+ 'a'". No entiendo lo que hace.

¿Alguien me lo puede explicar?
  #2 (permalink)  
Antiguo 03/10/2011, 16:46
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años, 6 meses
Puntos: 306
Respuesta: Letra aleatoria

A cada caracter le corresponde un número según la codificación que se esté utilizando.

Cuando a 'a' le sumas un número de 0 a 26, lo que estás haciendo es sumar al número que representa a 'a' otra cifra, de forma que consigues otra letra.

http://1.bp.blogspot.com/--1cykyK0vr...600/codigo.gif
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #3 (permalink)  
Antiguo 03/10/2011, 16:53
 
Fecha de Ingreso: mayo-2010
Mensajes: 30
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Letra aleatoria

Entonces digamos que el número que me sale es el 10. Se sumaría 10 a 97, que es el número que le corresponde a la 'a' y daría 107, osea la letra k.

Entendido, gracias.
  #4 (permalink)  
Antiguo 06/10/2011, 18:31
 
Fecha de Ingreso: mayo-2010
Mensajes: 30
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Letra aleatoria

Aprovecho el mismo post para añadir una cosa. En un ejercicio me piden que saque una letra aleatoria, osea lo anterior, pero que te diga si es vocal o consonante.

Código:
class Test {
	public static char getLetras() {
		return (char) (Math.random()*26 + 'a');
	}

	
	public static void main(String[] args) {
		
		
		if (getLetras() == 'a' || getLetras() == 'e' || getLetras() == 'i' || getLetras() == 'o' || getLetras() == 'u') {
			System.out.println(getLetras() + " es vocal");

		}
		else {
			System.out.println(getLetras() + " es consonante");
		}
		}
	}
Ese es el cógido que he escrito, pero no funciona. No sé exactamente como hacer que me diga si es vocal o consonante. ¿Alguna idea?
  #5 (permalink)  
Antiguo 06/10/2011, 19:48
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: Letra aleatoria

Cita:
Iniciado por Alecs7k Ver Mensaje
Aprovecho el mismo post para añadir una cosa. En un ejercicio me piden que saque una letra aleatoria, osea lo anterior, pero que te diga si es vocal o consonante.

Código:
class Test {
	public static char getLetras() {
		return (char) (Math.random()*26 + 'a');
	}

	
	public static void main(String[] args) {
		
		
		if (getLetras() == 'a' || getLetras() == 'e' || getLetras() == 'i' || getLetras() == 'o' || getLetras() == 'u') {
			System.out.println(getLetras() + " es vocal");

		}
		else {
			System.out.println(getLetras() + " es consonante");
		}
		}
	}
Ese es el cógido que he escrito, pero no funciona. No sé exactamente como hacer que me diga si es vocal o consonante. ¿Alguna idea?
Lo que pasa es que siempre llamas al método por lo que la letra seguira cambiando.

Debes almacenar la letra en una variable y luego comparar con esa variable.
Código Javascript:
Ver original
  1. char letraRandom = getLetras();
  2. if(letraRandom == 'a') {
  3.   //etc
  4. }
  #6 (permalink)  
Antiguo 06/10/2011, 23:56
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 16 años, 2 meses
Puntos: 188
Respuesta: Letra aleatoria

perdonad que se me fue la pinza con lo que respondi, era algo que ya estaba respondido.

Incluso para mejorarlo puedes meter todo en un bucle for con x pasos para que te vaya imprimiendo en cada uno lo que encuentra.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #7 (permalink)  
Antiguo 07/10/2011, 12:58
 
Fecha de Ingreso: mayo-2010
Mensajes: 30
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Letra aleatoria

Código:
class Test {
	public static char getLetras() {
		return (char) (Math.random()*26 + 'a');
	}
	
	public static void main(String[] args) {
		
		char letra=getLetras();
		
		if (letra == 'a' || letra == 'e' || letra == 'i' || letra == 'o' || letra == 'u') {
			System.out.println(letra + " es vocal");

		}
		else {
			System.out.println(letra + " es consonante");
		}
		}
	}
Ahora sí. Había probado también añadiendo al variable, pero en el println ponía que me sacase por pantalla getLetras(), por lo que me sacaba otra y no era correcto.

Gracias.

EDITO: Y así, con el bucle for, saldrían todas las letras en pantalla.

Código:
class Test {
	
	public static void main(String[] args) {
		
		char i;
		
		for (i=97;i<=122;i++) {
			System.out.print(i);
			if (i=='a' || i=='e' || i=='i' || i=='o' || i=='u') {
				System.out.println(" es vocal");
			}
			else {
				System.out.println(" es consonante");
			}
		}
		}
	}

Última edición por Alecs7k; 07/10/2011 a las 13:10
  #8 (permalink)  
Antiguo 22/10/2011, 14:44
 
Fecha de Ingreso: octubre-2011
Mensajes: 3
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Letra aleatoria

Hola buenas, he visto vuesto hilo comentando la mostracion aleatoria por pantalla de una letra y comparando haber si es vocal o consonante.

La casualidad esque toy empezando DAM y damos java y necesito saber como mostrar una letra mayúscula, ya e copido el código al netbeans y no m eda error, me muestra una letra y me pone si es vocal o consonante, pero no se como mostrarla mayúscula, haber si me podeis ayudar, muchas gracias

si no mañana subo el codigo entero

ya esta era solo poner la a mayuscula

Última edición por djguty; 22/10/2011 a las 14:51
  #9 (permalink)  
Antiguo 25/10/2011, 09:39
 
Fecha de Ingreso: octubre-2011
Mensajes: 3
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Letra aleatoria

Hola buenas despeus de solucioanr el problema del otro dia tengo uno nuevo

aver si alguien me puede ayduar con lo de las clases y demas o si hace falta abro otro en lace nuevo para axerlo mejor

aqui lo dejo:

public class programa {
public static void main (String args[])
{
conductor conductor=new conductor();

conductor.persona.setnombre("Pepito");
System.out.println(conductor.persona.getnombre());

conductor.persona.setapellido("Pérez");
System.out.println(conductor.persona.getapellido() );

conductor.persona.setdni("8005186H");
System.out.println(conductor.persona.getdni());

conductor.tipocarnet.setfecharen("25/10/2011");
System.out.println(conductor.persona.getfecharen() );

System.out.println(conductor.persona.gettipocarnet ());


}
}
esta deklarado en otros ficheros dos clases, persona y conductor pero en el set y en el get da fallo, solo en esas dos kosas aver si me peuden ayduar

gracias
  #10 (permalink)  
Antiguo 25/10/2011, 15:26
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años, 6 meses
Puntos: 306
Respuesta: Letra aleatoria

Cuando vayas a hacer una pregunta nueva, abre un nuevo hilo, y cuando sale un mensaje de error da información sobre el problema, por lo que sería muy útil que lo leyeras y que añadieses a tu pregunta el texto del error.

Sin ver ni tus clases Conductor y Persona, ni el error, se me ocurren dos posibilidades.

1) En el constructor de Conductor no has inicializado un objeto Persona
2) Que no hayas tenido en cuenta los ámbitos de los atributos (private, public...)

Otra cosa, las clases deben empezar por letra mayúscula.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.

Etiquetas: aleatoria, letra
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:31.