【发布时间】:2015-04-06 19:28:51
【问题描述】:
您好,如何避免在我的代码中出现重复的“彩票”?
现在的问题是一切正常,排序,随机数,将其制成字符串。 问题是,例如,如果我想要 5 张彩票而不是我将打印出 5 张彩票
例子
Lottery tickets:
--------------
[5, 13, 18, 22, 23, 23, 30]
[4, 7, 10, 12, 16, 26, 32]
[3, 5, 9, 22, 23, 25, 34]
[4, 5, 15, 18, 19, 19, 26]
[3, 3, 12, 14, 23, 26, 35] (Duplicate 3)
[5, 6, 12, 13, 14, 15, 26]
正如您所见,有重复的数字,我想避免这种情况,所以它总是随机的。如何避免这种情况?
import java.util.Arrays;
import java.util.Scanner;
public class Alt2 {
public static void main(String[] args) {
System.out.print("How many lottery tickets do u want?: \n");
Scanner svar= new Scanner(System.in);
int nr = svar.nextInt();
System.out.println("Lottery tickets: ");
System.out.println("--------------");
for(int i=0; i<nr; i++)
{
Alt2 t = new Alt2();
int[] lottoNummer = t.BubbleSort();
System.out.print(Arrays.toString(lottoNummer));
System.out.println();
svar.close();
}
}
private int[] getTicket(){
int[] lottoNummer = new int[7];
lottoNummer[0] = (int) ((35 * Math.random()) + 1);
lottoNummer[1] = (int) ((35 * Math.random()) + 1);
lottoNummer[2] = (int) ((35 * Math.random()) + 1);
lottoNummer[3] = (int) ((35 * Math.random()) + 1);
lottoNummer[4] = (int) ((35 * Math.random()) + 1);
lottoNummer[5] = (int) ((35 * Math.random()) + 1);
lottoNummer[6] = (int) ((35 * Math.random()) + 1);
return lottoNummer;
}
public int[] BubbleSort( )
{
int j;
boolean flag = true;
int temp;
Alt2 t = new Alt2();
int[] lottoNummer = t.getTicket();
while ( flag )
{
flag= false;
for( j=0; j < lottoNummer.length -1; j++ )
{
if ( lottoNummer[ j ] > lottoNummer[j+1] )
{
temp = lottoNummer[ j ];
lottoNummer[ j ] = lottoNummer[ j+1 ];
lottoNummer[ j+1 ] = temp;
flag = true;
}
}
}
return lottoNummer;
}
}
【问题讨论】:
-
在您的
getTicket方法中,您可以实现一个循环来不断生成随机数,直到没有重复。
标签: java arrays int duplicates