如何使用 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
我必须编写一个程序,允许用户在两个任务之间进行选择:一个随机组生成器,以及一个逐字分析和计算输入句子的任务。我真的很困惑如何去做。
说明是:
团队制作人:
如果输入 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