Java 代码怎么了?无论用户输入什么,第1队都将赢得比赛
下面的代码应生成一个介于0(包括0)和100(排除)之间的随机数,说明如果随机数小于用户输入的百分比,则团队1将获胜,如果随机数大于输入的百分比,则团队2应获胜,但结果总是团队1获胜Java 代码怎么了?无论用户输入什么,第1队都将赢得比赛,java,random,user-input,Java,Random,User Input,下面的代码应生成一个介于0(包括0)和100(排除)之间的随机数,说明如果随机数小于用户输入的百分比,则团队1将获胜,如果随机数大于输入的百分比,则团队2应获胜,但结果总是团队1获胜 import java.util.*; import java.util.Random; public class Playoffs { public static Scanner scan = new Scanner(System.in); public static void main(String
import java.util.*;
import java.util.Random;
public class Playoffs
{
public static Scanner scan = new Scanner(System.in);
public static void main(String [] args)
{
boolean validNumber;
int game1;
System.out.print("What is the % chance that team 1 will win the game?");
do{
game1 = scan.nextInt();
validNumber = game1 >= 0 && game1 <=100;
if(!validNumber){
System.out.println("INVALID NUMBER ENTERED: NOT BETWEEN 0 AND 100");
System.out.print("Enter a valid number between 0 and 100: ");
}
}while(!validNumber);
System.out.println("Team 1 has a " + game1 + "% chance of winning.");
此代码不会生成介于0和100之间的数字:
Random rand = new Random(100);
int randomNumber = rand.nextInt();
int oneGame = simulateOneGame(game1, randomNumber);
if(oneGame == 1){
System.out.println("\nTeam 1 has won the game");
}else if(oneGame == 0){
System.out.println("\nTeam 2 has won the game");
}
}
public static int simulateOneGame(int game1, int randomNumber)
{
int result=0;
if (randomNumber < game1) {
result += 1;
} else if(randomNumber > game1){
result += 0;
}
return result;
}
}
rand.nextInt可以返回Integer.MIN_值和Integer.MAX_值之间的任何数字,但由于使用的是常数seed 100,因此每次都会得到相同的随机数——在本例中为1193959466
此代码符合您的要求:
Random rand = new Random(100);
int randomNumber = rand.nextInt();
还要注意,您不必在每次迭代中创建新的随机实例。创建一个实例就足够了。此代码不会生成0到100之间的数字:
Random rand = new Random(100);
int randomNumber = rand.nextInt();
int oneGame = simulateOneGame(game1, randomNumber);
if(oneGame == 1){
System.out.println("\nTeam 1 has won the game");
}else if(oneGame == 0){
System.out.println("\nTeam 2 has won the game");
}
}
public static int simulateOneGame(int game1, int randomNumber)
{
int result=0;
if (randomNumber < game1) {
result += 1;
} else if(randomNumber > game1){
result += 0;
}
return result;
}
}
rand.nextInt可以返回Integer.MIN_值和Integer.MAX_值之间的任何数字,但由于使用的是常数seed 100,因此每次都会得到相同的随机数——在本例中为1193959466
此代码符合您的要求:
Random rand = new Random(100);
int randomNumber = rand.nextInt();
还要注意,您不必在每次迭代中创建新的随机实例。创建一个实例就足够了。您正在生成一个介于0和1之间的随机数。@Jesse什么?哪里?对不起,0和边界。nextInt方法生成一个伪随机、均匀分布的int值,该值介于0(包含)和指定的值(独占)之间。下面是答案。您正在生成一个介于0和1之间的随机数。@Jesse什么?哪里?对不起,0和边界。nextInt方法生成一个伪随机、均匀分布的int值,该值介于0(包含)和指定的值(独占)之间。下面是答案。int nextInt bound返回一个伪随机的、均匀分布的int值,该值介于0(包括0)和指定的值(不包括)之间,从该随机数生成器的序列中提取@KareemSasa是正确的,但是您在代码中没有使用该方法。您使用了int-nextInt。int-nextInt-bound返回一个伪随机的、均匀分布的int值,该值介于0(包含)和指定的值(排除)之间,从该随机数生成器的序列中提取@KareemSasa是正确的,但是您在代码中没有使用该方法。你使用了int-nextInt。