Как написать генератор случайных групп в Java, используя операторы else-if? - PullRequest
0 голосов
/ 28 мая 2019

Мне нужно написать программу, которая позволяет пользователю выбирать между двумя задачами: генератором случайных групп и задачей, которая анализирует и подсчитывает входное предложение по слову. Я действительно запутался в том, как это сделать. Инструкции: Team Maker: Если введено 1, приложение предложит пользователю ввести желаемое количество команд для составления. Если введен 0, ничего не происходит, и приложение продолжает запрашивать у пользователя ввод 1 или 2. См. Рис. 3. Если количество команд равно 1 или больше, приложение отображает номер команды, начиная с 1, а затем три полных имени, случайно выбранных из 49 учащихся, представленных в COP2510.txt. См. Также рис. 3, где введены цифры 1 и 3 для создания одной команды и трех команд соответственно. Подсказка: используйте класс Random, как показано в GetRandom1.java или GR.zip из Викторины 3, для реализации этого случайного выбора.
Все названия каждой команды должны отображаться, начиная с «вкладки». В этом приложении очень важно, чтобы ни один студент не появлялся в одной или разных командах более одного раза. Подсказка: существует несколько способов «сопоставить» случайное число (целое число) с конкретным именем ученика. Использование if .... else if .... else if .... else if .... является одним из возможных подходов и рекомендуется здесь. Сохранение всех имен в массиве - это другой способ, но он не описан до главы 10. Подсчет слов: Если введено 2, приложение предлагает пользователю ввести одно или несколько предложений. Смотри фиг-4. Приложение использует символ пробела "", чтобы отделить и посчитать слова во входных данных. Если есть два или более последовательных пробела, они рассматриваются как один. То есть «AA BB» и «AA BB» содержат два слова. Смотрите фиг-5. Все начальные и конечные пробелы на входе будут игнорироваться. Подсказка: используйте метод trim () для String. Приложение отображает две строки тире, то есть "-------------------", чтобы заключить каждое слово, которое оно находит. Каждое слово должно отображаться вместе с его длиной. Например, если "Привет, Джон!" введены две строки между тире: «Привет, (3)» и «Джон! (5)». После 2-й штриховой строки отображается общее количество слов для завершения задачи. Если слова или предложения не введены, появляется сообщение «Ничего или только пробелы (и)». отображается между двумя пунктирными линиями и счетчик равен нулю. Смотрите последний вход на рис-5. Подсказка: Вы можете использовать методы trim (), indexOf (), length (), substring () и equals () класса String для реализации вышеуказанной задачи подсчета слов. Даже если используются одни и те же методы, существуют разные подходы для выполнения этой задачи.

Я получил первую часть, где программа приветствует пользователя и показывает, что делает программа. Однако я не знаю, как кодировать генератор случайных команд. Я могу использовать только если заявления. Кто-то сказал мне назначить случайное число каждому имени, а затем использовать операторы if 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 = "";`

1 Ответ

0 голосов
/ 28 мая 2019

Лично я бы отказался от if-else и сделал бы массив. Создайте массив с каждым целым числом от 0 до N, где N - количество студентов. Затем перемешайте список. Я считаю, что в Java есть встроенная функция, но если нет, то алгоритм для нее тривиален.

Оттуда просто прочитайте в файле студента построчно и назначьте соответствующий номер из перемешанного массива. Пример psuedocode:


# >>> 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))

Альт, в списке 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
...