El programa simula el lanzamiento de dos dados. |
7.17 (Tiro de dados) Escriba una aplicación para simular el tiro de dos dados. La aplicación debe utilizar un objeto de la clase Random una vez para tirar el primer dado, y de nuevo para tirar el segundo dado. Después debe calcularse la suma de los dos valores. Cada dado puede mostrar un valor entero del 1 al 6, por lo que la suma de los valores variará del 2 al 12, siendo 7 la suma más frecuente, mientras que 2 y 12 serán las sumas menos frecuentes. Su aplicación debe tirar los dados 36 000 veces. Utilice un arreglo unidimensional para registrar el número de veces que aparezca cada una de las posibles sumas. Muestre los resultados en forma tabular. Determine si los totales son razonables (es decir, hay seis formas de tirar un siete, por lo que aproximadamente una sexta parte de los tiros deben ser 7)
Solución:
Este código debe llamarse UsaDeitel_7_17
Este código debe llamarse UsaDeitel_7_17
public class UsaDeitel_7_17 { // Abre clase UsaDeitel_7_17 public static void main(String args[]) { // Abre main Deitel_7_17 miObjeto = new Deitel_7_17(); System.out.println("\nEste programa simula el lanzamiento de dos dados.\n"); miObjeto.Recibir(); } // Cierra main } // Cierra UsaDeitel_7_17
Este código debe guardarse como Deitel_7_17.java
import java.util.Scanner; import java.util.Random; public class Deitel_7_17 { // Abre clase Deitel_7_17 Scanner entrada = new Scanner(System.in); Random aleatorio = new Random(); private int numero; int Arreglo[]; ///////////////////////////////////////////// // Metodo Recibir ///////////////////////////////////////////// public void Recibir() { // Abre metodo Recibir System.out.print("\nPor favor introduzca el numero de veces que se lanzaran "); System.out.print(" los dados\n"); numero = entrada.nextInt(); Arreglo = new int[numero]; Lanzar(); } // cierra metodo Recibir ///////////////////////////////////////////// // Metodo Lanzar ///////////////////////////////////////////// public void Lanzar() { // Abre metodo Lanzar int numero1; int numero2; for ( int i = 0; i < Arreglo.length; i++ ) { // Abre for numero1 = 1 + aleatorio.nextInt(6); numero2 = 1 + aleatorio.nextInt(6); // System.out.printf("\n%d\t%d\n", numero1, numero2); // Descomentar para verificar que las sumas se capturan // de manera correcta. Para esto intruducir un numero // pequenio Arreglo[i] = numero1 + numero2; } // Cierra for Contar(); } // Cierra metodo Lanzar ///////////////////////////////////////////// // Metodo Contar ///////////////////////////////////////////// public void Contar() { // Abre metodo Contar int Contador[] = new int[13]; for ( int j = 0; j < Arreglo.length; j++ ) { // Abre for for ( int k = 0; k < Contador.length; k++ ) { // Abre for anidado if ( Arreglo[j] == k ) Contador[k]++; } // Cierra for anidado } // Cierra for Imprimir(Contador); } // Cierra metodo Contar ///////////////////////////////////////////// // Metodo Imprimir ///////////////////////////////////////////// public void Imprimir( int B[]) { // Abre metodo Imprimir for (int m = 0; m < B.length; m++ ) { // Abre for System.out.printf("\n%d lanzamientos sumaron %d\n", B[m], m ); } // Cierra for } // Cierra metodo Imprimir } // Cierra clase Deitel_7_17
bueno
ResponderEliminarCreo que registrar los 36000 valores en un arreglo no es necesario en absoluto. Es más aunque tuviera algún sentido se está haciendo prácticamente lo mismo dos veces, al recorrer el Arreglo en Contar().
ResponderEliminarSupongo que fue la idea de hacer métodos que hacen una tarea específica lo que me hizo escribirlo así. Tienes toda la razón. Es redundante. Se puede meter fácilmente el método Contar en el método Lanzar.
ResponderEliminarSaludos.
mui buenoOoo !!
ResponderEliminar¡Gracias!
Eliminargracias
ResponderEliminarExcelente, full Java maestro.
ResponderEliminarBuen programa, una pregunta, como sería presentarlo en forma de tabla?, gracias
ResponderEliminarAquí en video: https://www.youtube.com/watch?v=PNw0_mCQVFI
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarhola disculpen me pueden ayudar con este ejercicio:
ResponderEliminarprograma en java que simule tirar dos dados en repetidas ocasiones hasta que la suma sea mayor a 9.
me aparece "no main classes found" cuando voy a compilar como soluciono esto
ResponderEliminar