Estoy diseñando un programa para mi clase que se supone que es para simular un juego de lotería. Se supone que debo diseñar un método que genera al azar números de la lotería, un método que se solicita y almacena el usuario por su número de opciones, un método que compara las matrices para encontrar cuántos números son los mismos, y, a continuación, se supone que debo llamar a todos ellos de nuevo hasta el método main, y crear mi instrucción de salida que contiene algunas sentencias que determinan que el premio es otorgado por la cantidad de partidos.

Aquí es lo que tengo hasta ahora

import java.util.*;
public class LotteryGame {
/**
The main method is the program's starting point 
*/
public static void main(String[] args){
int NUM_DIGITS = 5;
int[] userDigits = new int[5];
int[] lotteryNumbers = new int[5];
int sameNum;
generateNumbers(lotteryNumbers);
getUserData(userDigits);
compareArrays();
System.out.println("Lottery numbers: " + lotteryNumbers[0] + " " +
lotteryNumbers[1] + " " + lotteryNumbers[2] + " " + lotteryNumbers[3] +
" " + lotteryNumbers[4] + " ");
System.out.println("Player numbers:  " + userDigits[0] + " " + userDigits[1] + " " + userDigits[2] + " " + userDigits[3] + " " + userDigits[4] + " ");
System.out.println("Number of matching digits: " + sameNum);
if (sameNum == 5){
System.out.println("GRAND PRIZE WINNER - $5 MILLION!!");
}
if (sameNum == 4){
System.out.println("SUPER PRIZE WINNER - $500,000!!");
}
if (sameNum == 3){
System.out.println("GOOD PRIZE WINNER - $5,000!!");
}
if (sameNum == 2){
System.out.println("NICE PRIZE WINNER - $500!!");
} 
if (sameNum == 1){
System.out.println("WINNER - $5!!");
}
if (sameNum ==0){
System.out.println("No matching numbers - better luck next time");
}
} 
public static int generateNumbers(int [] lotteryNumbers){
Random randNum = new Random();
lotteryNumbers[0] = randNum.nextInt(10);
lotteryNumbers[1] = randNum.nextInt(10);
lotteryNumbers[2] = randNum.nextInt(10);  
lotteryNumbers[3] = randNum.nextInt(10);
lotteryNumbers[4] = randNum.nextInt(10);
return lotteryNumbers[4];
}
public static int getUserData (int [] userDigits){
Scanner keyboard = new Scanner(System.in);
System.out.print("Enter digit 1: ");
userDigits[0] = keyboard.nextInt();
System.out.print("Enter digit 2: ");
userDigits[1] = keyboard.nextInt();
System.out.print("Enter digit 3: ");
userDigits[2] = keyboard.nextInt();
System.out.print("Enter digit 4: ");
userDigits[3] = keyboard.nextInt();
System.out.print("Enter digit 5: ");
userDigits[4] = keyboard.nextInt();
return userDigits[4];
}
public static int compareArrays (int [] userDigits, 
int [] lotteryNumbers){
int sameNum = 0;
for (int i = 0; i < 5; i++){
for (int x = 0; x < 5; x++){
if (lotteryNumbers[i] == userDigits[x]){
sameNum++;
}
return sameNum;
}                           
return sameNum;                         
}
return sameNum;
}
}

Soy muy nuevo en matrices (y Java en eso) así que mis problemas son, en mi regreso/instrucciones de llamada. Por favor, disculpe mi spacey estilo de codificación y cualquier flagrantes errores que me han hecho. Cualquier sugerencias,consejos, soluciones, o si usted nota cualquier cosa mal con lo que tengo, por favor hágamelo saber. Gracias!

  • Así que has encontrado ninguna de las respuestas útiles?

3 Comentarios

  1. 0

    Tenga en cuenta que randNum.nextInt(10) le dará la lotería de números que van de 0 a 9. Usted puede utilizar un bucle for para asignar los números aleatorios para la lotteryNumbers matriz más fácil. También, usted debe asegurarse de que el azar de la lotería de números no se repiten.

    En su compareArrays función, sólo hay que poner un retorno sameNum llamada después de la ultraperiféricas de bucle, de lo contrario no se actualiza con el número correcto de números iguales. Usted necesita dar compareArrays() con los parámetros adecuados (userDigits y lotteryNumbers) y establecer sameNum igual a este resultado.

    • Gracias a ti, que realmente me ayudó. Los problemas con los parámetros que se pusieron a tirar todo lo que fuera, pero tengo que todos los que trabajan ahora. Muchas gracias!
    • Me alegra poder ayudar! Si usted está satisfecho con mi respuesta, ¿serías tan amable de marcarlo como «aceptado»?
  2. 0

    Varios puntos que pueden resultar útiles:

    1. Usted podría querer usar NUM_DIGITS para la iniciación de las matrices, ya que es el punto de tener constante con nombre:

      int[] userDigits = new int[NUM_DIGITS];
      int[] lotteryNumbers = new int[NUM_DIGITS];
    2. Puede utilizar Arrays.toString() a la salida de las matrices, por ejemplo:

      System.out.println(Arrays.toString(lotteryNumbers));
    3. Lugar de varios ifs uso switch, además de no repetir toda la instrucción print, sólo asignar la parte que difiere:

      String prize = "";
      switch (sameNum) {
      case 5:  prize = "GRAND PRIZE WINNER - $5 MILLION!!";
      break;
      case 4:  prize = "SUPER PRIZE WINNER - $500,000!!";
      break;
      case 3:  prize = "GOOD PRIZE WINNER - $5,000!!";
      break;
      case 2:  prize = "NICE PRIZE WINNER - $500!!";
      break;
      case 1:  prize = "WINNER - $5!!";
      break;
      case 0:  prize = "No matching numbers - better luck next time";
      break;
      default: prize = "Something weird happened";
      }
      System.out.println(prize);
  3. 0

    He actualizado el código con los cambios que usted necesita.

    • Añadido NÚM_DE_DECIMALES a su inicializador
    • Cerrado el Escáner
    • Quitado los primeros resultados en el método de comparación
    • Asignado el valor de retorno del método de comparación a sameNum
    • Establecer el valor de retorno de la generación y los métodos get para anular

    Las otras sugerencias podría ser algo que usted desea incorporar (como el switch/case).

    import java.util.Random;
    import java.util.Scanner;
    public class App {
    public static void main(String[] args) {
    int NUM_DIGITS = 5;
    int[] userDigits = new int[NUM_DIGITS];
    int[] lotteryNumbers = new int[NUM_DIGITS];
    int sameNum;
    generateNumbers(lotteryNumbers);
    getUserData(userDigits);
    sameNum = compareArrays(lotteryNumbers, userDigits);
    System.out.println("Lottery numbers: " + lotteryNumbers[0] + " "
    + lotteryNumbers[1] + " " + lotteryNumbers[2] + " "
    + lotteryNumbers[3] + " " + lotteryNumbers[4] + " ");
    System.out.println("Player numbers:  " + userDigits[0] + " "
    + userDigits[1] + " " + userDigits[2] + " " + userDigits[3]
    + " " + userDigits[4] + " ");
    System.out.println("Number of matching digits: " + sameNum);
    if (sameNum == 5) {
    System.out.println("GRAND PRIZE WINNER - $5 MILLION!!");
    }
    if (sameNum == 4) {
    System.out.println("SUPER PRIZE WINNER - $500,000!!");
    }
    if (sameNum == 3) {
    System.out.println("GOOD PRIZE WINNER - $5,000!!");
    }
    if (sameNum == 2) {
    System.out.println("NICE PRIZE WINNER - $500!!");
    }
    if (sameNum == 1) {
    System.out.println("WINNER - $5!!");
    }
    if (sameNum == 0) {
    System.out.println("No matching numbers - better luck next time");
    }
    }
    public static void generateNumbers(int[] lotteryNumbers) {
    Random randNum = new Random();
    lotteryNumbers[0] = randNum.nextInt(10);
    lotteryNumbers[1] = randNum.nextInt(10);
    lotteryNumbers[2] = randNum.nextInt(10);
    lotteryNumbers[3] = randNum.nextInt(10);
    lotteryNumbers[4] = randNum.nextInt(10);
    return lotteryNumbers[4];
    }
    public static void getUserData(int[] userDigits) {
    Scanner keyboard = new Scanner(System.in);
    System.out.print("Enter digit 1: ");
    userDigits[0] = keyboard.nextInt();
    System.out.print("Enter digit 2: ");
    userDigits[1] = keyboard.nextInt();
    System.out.print("Enter digit 3: ");
    userDigits[2] = keyboard.nextInt();
    System.out.print("Enter digit 4: ");
    userDigits[3] = keyboard.nextInt();
    System.out.print("Enter digit 5: ");
    userDigits[4] = keyboard.nextInt();
    keyboard.close();
    return userDigits[4];
    }
    public static int compareArrays(int[] userDigits, int[] lotteryNumbers) {
    int sameNum = 0;
    for (int i = 0; i < 5; i++) {
    for (int x = 0; x < 5; x++) {
    if (lotteryNumbers[i] == userDigits[x]) {
    sameNum++;
    }
    }
    }
    return sameNum;
    }
    }
    • Bien gracias. Ahora estoy tomando una salida con los números de la lotería y el usuario, números de entrada, pero los partidos aparecen como 0. Me puse int partidos igual a mi llamada declaración de compareArrays(sameNum) pero que no está funcionando
    • Vuelves después de la primera instrucción if en el bucle interno, así como en el bucle externo, de modo que usted nunca conseguirá a través de sus matrices.
    • Eso tiene sentido, ¡muchas gracias!
    • Usted sabe, usted podría haber dejado la generación de métodos como eran, no sé por qué no funcionan. Te estás volviendo un int de ellos en lugar de vacío, pero que realmente no importa. El argumento sería la referencia a la matriz, por lo que las actualizaciones a que hacen referencia debe persistir mientras la referencia se mantiene en el ámbito de aplicación.

Dejar respuesta

Please enter your comment!
Please enter your name here