Программа лотереи Java

1

Я разрабатываю программу для своего класса, которая должна имитировать лотерею. Я должен разработать метод, который генерирует случайные номера лотереи, метод, который запрашивает и хранит пользователя для их выбора номера, метод, который сравнивает массивы, чтобы найти количество чисел одинаковое, а затем я должен назвать их всех вернуться к основному методу и создать мой оператор вывода, содержащий некоторые операторы if, которые определяют, какой приз присуждается за определенное количество совпадений.

Вот что я до сих пор

import java.util.*;


public class LotteryGame {
/**
  The main method is the program 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;

 }

}

Я очень новичок в массивах (и Java в этом), поэтому мои проблемы возникают в моих операциях return/call. Пожалуйста, извините мой пробельный стиль кодирования и любые вопиющие ошибки, которые я сделал. Любые советы, советы, решения, или если вы заметили что-то не так с тем, что у меня есть, дайте мне знать. Благодарю!

  • 0
    Нашли ли вы какие-либо ответы полезными?
Теги:
arrays

3 ответа

0
Лучший ответ

Имейте в виду, что randNum.nextInt(10) даст вам номера лотереи, которые варьируются от 0 до 9. Вы можете использовать цикл for, чтобы легче назначить случайные числа в лотерейный ряд. Кроме того, вы должны убедиться, что номера случайных лотерей не повторяются.

В вашей функции compareArrays просто поместите один возвращаемый oneNum-вызов после внешнего цикла, иначе он не будет обновляться с правильным количеством совпадающих чисел. Вам нужно дать compareArrays() правильные параметры (userDigits и lotteryNumbers) и установить sameNum равным этому результату.

  • 0
    Спасибо, это действительно помогло. Те проблемы с параметрами отбрасывали все, но теперь я все заработал. Спасибо!
  • 0
    Рад, что смог помочь! Если вы удовлетворены моим ответом, не могли бы вы отметить его как «принятый»?
0

Я обновил ваш код с изменениями, которые вам понадобятся.

  • Добавлен NUM_DIGITS к вашему инициализатору
  • Закрыл сканер
  • Удалено раннее возвращение в методе сравнения
  • Назначение возвращаемого значения метода сравнения для sameNum
  • Установите возвращаемое значение генерации и получите методы для удаления

Другие предложения могут быть тем, что вы хотите включить (например, переключатель/корпус).

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;
    }

}
  • 0
    Хорошо, спасибо. Теперь я получаю вывод с номерами лотереи и номерами входа пользователя, но совпадения продолжают отображаться как 0. Я установил совпадения int равными моему оператору вызова compareArrays (sameNum), но это не работает
  • 0
    Вы возвращаетесь после первого оператора if во внутреннем цикле, а также во внешнем цикле, поэтому вы никогда не пройдете через свои массивы.
Показать ещё 2 комментария
0

Несколько пунктов, которые могут оказаться полезными:

  1. Возможно, вы захотите использовать NUM_DIGITS для инициализации массивов, так как вся точка с именем constant:

    int[] userDigits = new int[NUM_DIGITS];
    int[] lotteryNumbers = new int[NUM_DIGITS];
    
  2. Вы можете использовать Arrays.toString() для вывода массивов, например:

    System.out.println(Arrays.toString(lotteryNumbers));
    
  3. Вместо множественного, if использовать switch, а также не повторяйте всю инструкцию печати, назначьте только часть, которая отличается:

    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);
    

Ещё вопросы

Сообщество Overcoder
Наверх
Меню