【发布时间】:2016-02-04 03:24:49
【问题描述】:
我正在为课堂编写程序。这是一个彩票游戏。这是给出的问题:
编写一个java程序。该程序应该有一个名为 lotteryNumber() 的方法,它应该接受两个整数,最大和最小数字,并且应该随机生成并返回这两个数字之间的数字(包括两者)。
另外,提供一个名为 checkWinner() 的方法,它应该接受两个数组(一个用于彩票号码 和一个用于用户的号码)并检查它们是否相同(相同的号码和顺序)。如果它们是 同样,它应该返回true,否则它应该返回false。请使用您自己的逻辑来检查相等性 使用相等运算符。不允许使用像 Arrays.equals() 这样的预构建函数!
在 main 方法中,使用 lotteryNumber() 方法随机生成 4 个数字,介于 0 到 10 之间(包括两者)。然后要求用户从键盘输入 0 到 10 之间的 4 个数字。然后使用 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;
}
}
任何帮助将不胜感激!
【问题讨论】:
-
您是否尝试过循环使用 lotteryNumber 方法?
-
不,我没有。我们没有在课堂上谈论这个,所以我不知道我的教授是否会同意我使用它。
-
给你一些建议:(1) 要在 Java 中获取一个范围内的随机数,请使用
n = r.nextInt(maxValue-minValue+1)+minValue。 (2) 在您的checkNumber方法中,您只需要一个匹配即可失败,这意味着当索引i处的数字不匹配时,您可以提前退出循环(在for(;;)内返回false) .试试看是否有帮助。 -
哦,最好的指针和你最好的朋友作为未来的程序员:
google:)。只需 googlehow to get a random number in a range in java并选择数百万个结果中的任何一个 :)。与学习如何循环数组以及如何正确填充它们相同。 -
好的。听起来不错。谢谢!!
标签: java arrays random methods java.util.scanner