首页 > 解决方案 > java - 如何使用else-if语句在java中编写随机组生成器?

问题描述

我必须编写一个程序,允许用户在两​​个任务之间进行选择:一个随机组生成器,以及一个逐字解析和计算输入句子的任务。我真的很困惑如何去做。说明如下: Team Maker:如果输入 1,应用程序会提示用户输入所需的团队数量。如果输入 0,则什么也不会发生,应用程序会继续提示用户输入 1 或 2。见图 3。如果团队数量为 1 或更多,则应用程序会显示团队编号,从 1 开始,后跟从 COP2510.txt 中提供的 49 名学生中随机选择的三个全名。另请参见图 3,其中输入 1 和 3 分别表示组成一队和三队。提示:使用在 GetRandom1.java 或 Quiz 3 的 GR.zip 中看到的 Random 类来实现这个随机选择。
每个团队的所有名称都必须以“标签”开头。在此应用程序中非常重要的是,没有学生会多次出现在相同或不同的团队中。提示:将随机数(整数)“映射”到特定学生姓名的方法不止一种。使用 if....else if....else if....else if.... 是一种可能的方法,在这里推荐。将所有名称存储在数组中是另一种方式,但直到第 10 章才介绍。计算字数:如果输入 2,应用程序会提示用户输入一个或多个句子。参见图 4。该应用程序使用空格字符“”来分隔和计算输入中的单词。如果有两个或多个连续空格,则将它们视为一个。即“AA BB”和“AA BB”都包含两个词。参见图 5。输入中的所有前导和尾随空格都将被忽略。提示:使用 String 的 'trim()' 方法。该应用程序显示两行破折号,即“------”以将它找到的每个单词括起来。每个单词必须连同它的长度一起显示。例如,如果“嗨,约翰!” 输入后,破折号之间的两行应该是“Hi, (3)”和“John!(5)”。在第二条虚线之后,显示结束任务的总字数。如果未输入任何单词或句子,则会显示“无或仅输入空格”的消息。显示在两条虚线之间,并且计数为零。请参见图 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 = "";`

标签: javarandomgroupingword-count

解决方案


就个人而言,我会放弃 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

推荐阅读