Необходимо рекурсивно печатать имена элементов из текстового файла

#java #recursion

#java #рекурсия

Вопрос:

В моем классе Java мы только сейчас узнаем о рекурсии, и это проблема, которую меня попросили выполнить. В текстовом файле есть несколько строк сотрудников в этом формате: Имя, часы, заработная плата, босс.

У меня настроен сканер, и все работает хорошо, за исключением того, что есть один главный босс («N / A» — это то, что находится под его полем boss), а затем он разделяется на разных людей (в текстовом файле они не в порядке.) Задача состоит в том, чтобы напечатать их в порядке ранжирования, т.Е.:

Имя босса: Заработная плата

—2-й сотрудник: Заработная плата

—-3-й сотрудник: Заработная плата

— 4-й сотрудник: Заработная плата

Это должно быть сделано рекурсивно, и я полностью в тупике. Я просто не могу понять, что использовать в качестве «базового варианта» или как его даже запустить.

Спасибо за любую помощь, это очень ценится.

Ответ №1:

Вам нужно написать метод, который находит всех сотрудников с данным боссом. Затем напишите другой метод, который, учитывая имя босса и уровень, находит босса и довольно быстро печатает его / ее, затем находит всех своих сотрудников (вызывая 1-й метод) и рекурсивно вызывает себя для каждого сотрудника.

Вызовите этот второй метод из main с «N / A» в качестве имени босса и 1 в качестве уровня.

Ответ №2:

что ж, проверьте этот простой исходный код, возможно, это поможет вам начать…

 import java.io.*;

class test
{
        //main method
    public static void main (String[] args) throws java.io.IOException
     {
        String filename = "input.txt";

         // Initialize the reader
         BufferedReader reader = null;
         try {
             reader = new BufferedReader(new FileReader(filename));
         } 
         catch (FileNotFoundException e) {
             e.printStackTrace();
         }

        //recursive call
        myRecursion(reader);

     } //end main

    //method using recursion to read a file
    static void myRecursion(BufferedReader br) 
    {
        String s1 = "";

        try {
             s1 = br.readLine();
         }
         catch (IOException e) {
             e.printStackTrace();
         }

        if(s1 == null)
            return;
        else 
        {
            System.out.println (s1);
            myRecursion(br);
            return;
        }
    } //end method
} //end class
  

The input.txt является:

 one
two
three