如何使用 else-if 语句在 java 中编写随机组生成器?

How to write a random group generator in java using else-if statements?

我必须编写一个程序,允许用户在两​​个任务之间进行选择:一个随机组生成器,以及一个逐字分析和计算输入句子的任务。我真的很困惑如何去做。 说明是: 团队制作人: 如果输入 1,应用程序会提示用户输入所需的团队数量。 如果输入 0,则什么也不会发生,应用程序会继续提示用户输入 1 或 2。请参见图 3。 如果团队数量为 1 或更多,应用程序将显示团队编号,从 1 开始,后跟从 COP2510.txt 中提供的 49 名学生中随机选择的三个全名。另请参见图 3,其中输入 1 和 3 分别表示组成一个团队和三个团队。提示:使用小测验 3 GetRandom1.java 或 GR.zip 中的随机 class 来实现此随机选择。
每个团队的所有名称都必须以 'tab' 开头显示。 在此应用程序中非常重要的是,没有学生多次出现在相同或不同的团队中。 提示:有不止一种方法可以 "map" 一个随机数(整数)到一个特定的学生姓名。使用 if....else if....else if....else if.... 是一种可能的方法,建议在此处使用。将所有名称存储在数组中是另一种方法,但直到第 10 章才介绍。 数词: 如果输入 2,应用程序会提示用户输入一个或多个句子。见图 4。 该应用程序使用 space 字符“”来分隔和计算输入中的单词。如果连续出现两个或多个 space,则将它们视为一个。也就是说,"AA BB" 和 "AA BB" 都包含两个单词。见图 5。 输入中的所有前导和尾随 space 都将被忽略。提示:使用 String 的 'trim()' 方法。 该应用程序显示两行破折号,即“--------------------”以包含它找到的每个单词。每个单词必须与其长度一起显示。例如,如果输入 "Hi, John!",则破折号之间的两条线应为 "Hi, (3)" 和 "John!(5)"。 在第二条虚线之后,显示单词总数以结束任务。 如果没有输入单词或句子,则两条虚线之间会显示 "Nothing or only space(s) is entered." 消息,并且计数为零。请参见图 5 中的最后一个输入。 提示:可以使用String的trim()、indexOf()、length()、substring()、equals()方法来实现上述字数统计任务。即使使用相同的方法,也有不同的方法来完成此任务。

我得到了程序欢迎用户的第一部分,并展示了程序的功能。但是我不知道如何编写随机团队生成器的代码。我只能使用 else if 语句。有人告诉我为每个名字分配一个随机数,然后使用 else if 语句,但我不知道该怎么做。至于计数器这个词,我只是不知道。如果有人可以提供帮助,那就太好了。

   import java.util.Scanner;
   import java.util.Random;
   public class asssignment3 {
   public static void main (String args[]){
   Scanner sc = new Scanner(System.in);
    //print out a task prompt 
    System.out.println("Assignment-3 can perform the following two task:");
    System.out.println();
    System.out.println("\t1-Making 3-member tems from class of COP2510");
    System.out.println("\t2-Parsing and counting an input sentence by word");
    System.out.println();
    System.out.print("Enter 1 or 2 to begin your task or anything else to quit:   ");
    String choiceNumber = sc.nextLine (); 

  if (choiceNumber.equalsIgnoreCase("0")) {
      System.out.println("Enter 1 or 2 to begin your task or anything else to quit:  ");
      String optionNumber = sc.nextLine ();
  }
  Random r = new Random();    
 if (choiceNumber.equalsIgnoreCase ("1")) {
     String studentName = "";`

就我个人而言,我会放弃 if-else 而做数组。用 0-N 中的每个整数创建一个数组,其中 N 是学生的数量。然后,将列表洗牌。我相信 Java 有一个预建的功能,但如果没有,一个算法是微不足道的。

从那里开始,只需逐行读入学生文件并从打乱后的数组中分配相应的数字。 示例伪代码:


# >>> Generate the list of numbers of shuffle it. <<< #
N = number of students
numbers = [i for i in range(N)]
random.shuffle(numbers)

# >>> Initialize a list to store number-student pair <<< #
students = []

# >>> Read in the student file line by line <<< #
for line in students.txt:
    randomNumber = numbers.pop()
    students.append((line, randomNumber))

Viola,students 列表现在包含所有学生,并随机编号。

至于统计单词,运行输入通过trim()然后split()。

# >>> Removes whitespace before and after the string ("  A " -> "A") <<< #
input = input.trim()
# >>> Splits input into an array ("AA BB CC" -> ["AA", "BB", "CC"]) <<< #
words = input.split(" ")
numWords = word.length