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

Método Random en un FOR

Estas en el tema de Método Random en un FOR en el foro de Java en Foros del Web. Estoy haciendo un juego de cartas en las que quiero me salga una carta cualquiera, dejo el código si quieren mirar algo, tengo mis fallos ...
  #1 (permalink)  
Antiguo 14/02/2013, 05:41
Avatar de NestorCss  
Fecha de Ingreso: diciembre-2010
Ubicación: Las Palmas
Mensajes: 16
Antigüedad: 13 años, 4 meses
Puntos: 1
Método Random en un FOR

Estoy haciendo un juego de cartas en las que quiero me salga una carta cualquiera,
dejo el código si quieren mirar algo, tengo mis fallos porque aun estoy empezando con java, si me dicen errores, mucho mejor jajaja. Asi aprenderé más.
package components;



public class carta {



public static void palo ()
{
String [] palos = {"oros","copas","espadas", "bastos"};
for (int i=0; i<4; i++){
System.out.println(palos[i]);
}
}
public static void figura ()
{
String [] figuras = {"uno", "dos", "tres", "cuatro", "cinco", "seis",
"siete", "ocho", "nueve", "sota", "caballo", "rey"};
for (int j=0; j<10; j++){
System.out.println(figuras[j]);
}

}

public static void main(String[] args) {

System.out.println("╔══════════════════╗" + "\n" +
"║ ║" + "\n" +
"║ ║" + "\n" +
"║ ║" + "\n" +
"║" + figura() + "║" + "\n" +
"║" + "de" + "║" + "\n" +
"║" + palo() + "║" + "\n" +
"║ ║" + "\n" +
"║ ║" + "\n" +
"║ ║" + "\n" +
"║ ║" + "\n" +
"║ ║" + "\n" +
"╚══════════════════╝"

);

}
}

¿Cómo implementaría el método random en figura() y palo()?


Edit: Imaginen que es una carta lo de los "║", sale mal poniendolo aqui
  #2 (permalink)  
Antiguo 14/02/2013, 06:30
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 7 meses
Puntos: 188
Respuesta: Método Random en un FOR

Para los palos
String paloAleatorio = palos[(int) (Math.random()*3)]; // saca un valor comprendido entre 0 y 3 tranformado a entero y obtiene palos[i]
Para las figuras
String figuraAleatoria = figuras[(int) (Math.random()*11)]; // saca un valor comprendido entre 0 y 11 tranformado a entero y obtiene figuras[i]

(si quitas ochos y nueves tendras entonces que elegir figuras de 0 a 9)
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #3 (permalink)  
Antiguo 14/02/2013, 06:38
Avatar de NestorCss  
Fecha de Ingreso: diciembre-2010
Ubicación: Las Palmas
Mensajes: 16
Antigüedad: 13 años, 4 meses
Puntos: 1
Respuesta: Método Random en un FOR

Cita:
Iniciado por Fuzzylog Ver Mensaje
Para los palos
String paloAleatorio = palos[(int) (Math.random()*3)]; // saca un valor comprendido entre 0 y 3 tranformado a entero y obtiene palos[i]
Para las figuras
String figuraAleatoria = figuras[(int) (Math.random()*11)]; // saca un valor comprendido entre 0 y 11 tranformado a entero y obtiene figuras[i]

(si quitas ochos y nueves tendras entonces que elegir figuras de 0 a 9)
Lo pondría dentro de for o fuera del for?

public static void figura ()
{
String [] figuras = {"uno", "dos", "tres", "cuatro", "cinco", "seis",
"siete", "ocho", "nueve", "sota", "caballo", "rey"};
String figuraAleatoria = figuras[(int) (Math.random()*11)];
for (int j=0; j<10; j++){
String figuraAleatoria = figuras[(int) (Math.random()*11)];
System.out.println(figuras[j]);
}

}

Cuál estaría bien el rojo o el naranja, estoy muy verdoso con el java xD

P.D: Además creo que dentro del system.out.println, me da un error con que me sobra un operador "+" pero la verdad es que descubri que son los método, figura() o palo(), que pongo dentro del system.out.println para que me salga una carta al azar
  #4 (permalink)  
Antiguo 14/02/2013, 06:58
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 7 meses
Puntos: 188
Respuesta: Método Random en un FOR

Si quieres que solo saque una carta al azar ponlo fuera del for, obviamente.
Algo así como en tu main, una vez definidos figuras y palos:

System.out.println("Obteniendo carta aleatoria");
System.out.println(figuras[(int) (Math.random()*11)] + " de " + palos[(int) (Math.random()*11)]);
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}

Etiquetas: random, string
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 08:20.