Java 代码怎么了?无论用户输入什么,第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

下面的代码应生成一个介于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 [] 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。