System.out.print 仅限中奖线
System.out.print the winning line only
我有一个 java 彩票游戏作业,我在 运行 一个 while 循环以防止结果中的数字重复。
我得到一个没有重复的数字列表,但是 System.out.print
返回所有行,直到我得到最后一个没有重复的行。有没有办法只打印最后的“获胜”行?
下面的代码
while (numCount<=9) {
int randNumber = rand.nextInt(99)+1;
if (results[0] == randNumber || results[1] == randNumber || results[2] == randNumber || results[3] == randNumber ||
results[4] == randNumber || results[5] == randNumber || results[6] == randNumber || results[7] == randNumber
|| results[8] == randNumber || results[9] == randNumber) {
} else {
Array.setInt(results, numCount, randNumber);
numCount++;
}
System.out.print("The Lottery Numbers are: ");
for (int i=0; i<10; i++)
//add a 0 in front of the number is it's less that 10
if (results[i] <10) {
System.out.print("0"+results[i]+" ");
}
}
你可以更简单地做到这一点,因为 Set
中没有重复的对象。
public static void main(String[] args) {
Random rand = new Random();
Set<Integer> winningNumbers = new HashSet<>();
while (winningNumbers.size() < 9) {
int randNumber = rand.nextInt(99) + 1;
winningNumbers.add(randNumber);
}
System.out.print("The Lottery Numbers are: ");
for (Integer number : winningNumbers) {
//add a 0 in front of the number is it's less that 10
if (number < 10) {
System.out.print("0" + number + " ");
} else {
System.out.print(number + " ");
}
}
}
您甚至可以简化打印数字的方式,依靠 printf()
和 %02d
,这意味着使用 0 填充作为打印数字的最大宽度 2:
public static void main(String[] args) {
Random rand = new Random();
Set<Integer> winningNumbers = new HashSet<>();
while (winningNumbers.size() < 9) {
int randNumber = rand.nextInt(99) + 1;
winningNumbers.add(randNumber);
}
System.out.print("The Lottery Numbers are: ");
System.out.printf("%02d %02d %02d %02d %02d %02d %02d %02d %02d", winningNumbers.toArray());
}
在您的代码中,只需将 System.out.print("The Lottery Numbers are: ");
行移动到 while 循环之前,将循环 for (int i=0; i<10; i++)
移动到 while 循环之后,如下所示:
System.out.print("The Lottery Numbers are: ");
while (numCount<=9) {
int randNumber = rand.nextInt(99)+1;
if (results[0] == randNumber || results[1] == randNumber || results[2] == randNumber || results[3] == randNumber ||
results[4] == randNumber || results[5] == randNumber || results[6] == randNumber || results[7] == randNumber
|| results[8] == randNumber || results[9] == randNumber) {
} else {
Array.setInt(results, numCount, randNumber);
numCount++;
}
}
for (int i=0; i<10; i++)
//add a 0 in front of the number is it's less that 10
if (results[i] <10) {
System.out.print("0"+results[i]+" ");
}
我有一个 java 彩票游戏作业,我在 运行 一个 while 循环以防止结果中的数字重复。
我得到一个没有重复的数字列表,但是 System.out.print
返回所有行,直到我得到最后一个没有重复的行。有没有办法只打印最后的“获胜”行?
下面的代码
while (numCount<=9) {
int randNumber = rand.nextInt(99)+1;
if (results[0] == randNumber || results[1] == randNumber || results[2] == randNumber || results[3] == randNumber ||
results[4] == randNumber || results[5] == randNumber || results[6] == randNumber || results[7] == randNumber
|| results[8] == randNumber || results[9] == randNumber) {
} else {
Array.setInt(results, numCount, randNumber);
numCount++;
}
System.out.print("The Lottery Numbers are: ");
for (int i=0; i<10; i++)
//add a 0 in front of the number is it's less that 10
if (results[i] <10) {
System.out.print("0"+results[i]+" ");
}
}
你可以更简单地做到这一点,因为 Set
中没有重复的对象。
public static void main(String[] args) {
Random rand = new Random();
Set<Integer> winningNumbers = new HashSet<>();
while (winningNumbers.size() < 9) {
int randNumber = rand.nextInt(99) + 1;
winningNumbers.add(randNumber);
}
System.out.print("The Lottery Numbers are: ");
for (Integer number : winningNumbers) {
//add a 0 in front of the number is it's less that 10
if (number < 10) {
System.out.print("0" + number + " ");
} else {
System.out.print(number + " ");
}
}
}
您甚至可以简化打印数字的方式,依靠 printf()
和 %02d
,这意味着使用 0 填充作为打印数字的最大宽度 2:
public static void main(String[] args) {
Random rand = new Random();
Set<Integer> winningNumbers = new HashSet<>();
while (winningNumbers.size() < 9) {
int randNumber = rand.nextInt(99) + 1;
winningNumbers.add(randNumber);
}
System.out.print("The Lottery Numbers are: ");
System.out.printf("%02d %02d %02d %02d %02d %02d %02d %02d %02d", winningNumbers.toArray());
}
在您的代码中,只需将 System.out.print("The Lottery Numbers are: ");
行移动到 while 循环之前,将循环 for (int i=0; i<10; i++)
移动到 while 循环之后,如下所示:
System.out.print("The Lottery Numbers are: ");
while (numCount<=9) {
int randNumber = rand.nextInt(99)+1;
if (results[0] == randNumber || results[1] == randNumber || results[2] == randNumber || results[3] == randNumber ||
results[4] == randNumber || results[5] == randNumber || results[6] == randNumber || results[7] == randNumber
|| results[8] == randNumber || results[9] == randNumber) {
} else {
Array.setInt(results, numCount, randNumber);
numCount++;
}
}
for (int i=0; i<10; i++)
//add a 0 in front of the number is it's less that 10
if (results[i] <10) {
System.out.print("0"+results[i]+" ");
}