彩票号码生成器

时间:2015-11-03 20:13:39

标签: java arrays random methods java.util.scanner

我正在为课堂写一个程序。这是一个彩票游戏。这是给出的问题:

编写一个java程序。程序应该有一个名为lotteryNumber()的方法,它应该接受两个整数,最大和最小数字,并且应该随机生成并返回这两个数字之间的数字(包括两者)。

另外,提供一个名为checkWinner()的方法,它应该接受两个数组(一个用于抽奖号码) 和一个用户的号码)并检查它们是否相同(相同的数字和顺序)。如果它们是 同样,它应该返回true,否则它应该返回false。请使用您自己的逻辑来检查相等性 使用相等运算符。不允许使用像Arrays.equals()这样的预建函数!

在main方法中,使用lotteryNumber()方法随机生成4个数字,介于0-10(包括两者)之间。然后要求用户从键盘输入0到10之间的数字。然后使用checkWinner()方法检查并显示用户是不是赢家。

我的问题在于lotteryNumber方法。我怎么应该只返回一个数字而不使用数组并仍然生成4个数字?请记住,我一般都是数组和java的新手,我需要将彩票号放在main方法的数组中,以便我可以将它们与用户输入进行比较。或者至少这是我提出的问题

这就是我现在所拥有的。对不起,它是如此混乱,我一直在尝试不同的东西,希望弄明白

import java.util.Random;
import java.util.Scanner;

public class Assignment04 {
public static void main (String [] args){

    Scanner input = new Scanner (System.in); 

    Random r = new Random (); 

    int [] user= new int [4]; 
    //int [] rand= new int [4]; 

    int rand1= r.nextInt(10); 
    int rand2= r.nextInt(10); 
    int rand3 = lotteryNumber(rand1,rand2);

    /*for (int i=0; i<rand.length; i++){
        rand [i] = r.nextInt(11); 
    }

    for (int j=0; j<rand.length; j++){
        System.out.print(rand[j]+",");
    }*/

    System.out.println("");
    System.out.print("Enter number 1 between (1-10)= ");
    user[0] = input.nextInt();
    System.out.print("Enter number 2 between (1-10)= ");
    user[1] = input.nextInt(); 
    System.out.print("Enter number 3 between (1-10)= ");
    user[2]= input.nextInt();
    System.out.print("Enter number 4 between (1-10)= ");
    user[3] = input.nextInt();



    System.out.printf("Your numbers- %d, %d, %d, %d \n",user[0],user[1],user[2],user[3]);

    if (checkNumber(user,rand)){
        System.out.println("Winner!");
    }

    else System.out.println("Better luck next time!");

}


public static int lotteryNumber(int max, int min){

    Random r = new Random (); 
    max = 0; 
    min= 100; 
    int n= 1+r.nextInt(10) ; 

    for (int i=0; i< 4;i++){

        n = 1+r.nextInt(10);
        if (n > max) max= n;
        else if (n < min) min = n ; 
        else if (n<max && n>min) n = r.nextInt(10);

    }

    return n; 
}

public static boolean checkNumber(int [] lottery, int[] input){

    boolean a ; 
    int b=0; 

    for (int i=0; i<lottery.length; i++){
        if (lottery[i]==input[i]) b++; 
    }

    if (b==lottery.length) a = true;
    else a = false; 

    return a; 
}

}

任何帮助都会非常感激!

2 个答案:

答案 0 :(得分:5)

由于这是一项家庭作业,我将避免给你代码,但我会帮助你理解这个概念,你可以努力使它成为现实。

您只需在main方法中创建一个数组,然后使lotteryNumber()方法返回一个数字。然后使用从lotteryNumber()方法获得的随机数填充main方法中的数组。

这样的事情:

Main(){
    array[] numbers;
    loop 4 times{
        numbers[index] = lotteryNumber(0, 10);
    }
}
public int lotteryNumber(int min, int max){
    return (random number between min and max);
}

修改

由于你在评论中提到你还没有完成循环,你仍然可以手动输入随机数:

numbers[0] = lotteryNumber(0, 10);
numbers[1] = lotteryNumber(0, 10);
numbers[2] = lotteryNumber(0, 10);
numbers[3] = lotteryNumber(0, 10);

答案 1 :(得分:0)

您可以将一组数字转换为字符串,然后将字符串转换为单个数字。

Java - Convert integer to string

How to convert a String to an int in Java?

你听起来像是让用户输入一个4-8位数字,一次输入1-2位数字。然后随机生成一个4-8位数字,一次1-2个数字,按照生成/输入的顺序查看它们,并查看它们是否相同。

但是,如果您尝试组合然后比较,则此方法会出现问题,因为它们的数字位数不同。考虑例如: 随机数为10,1,0,0,生成的一组数字1,0,10,0将它们组合在一起它们都会产生10100,这可能是一个问题,这取决于你如何定义相等性。

您可能希望按问题定义查看4,1-2位数的序列。 您的相等方法应该像检查两个数组中相同位置的数字是否相等一样简单。如果有人是胜利者,你需要返回一个布尔值,而不是4-8位数字。