尝试创建一个使用搜索二叉树跟踪学生的程序-Java

尝试创建一个使用搜索二叉树跟踪学生的程序-Java,java,queue,binary-search-tree,Java,Queue,Binary Search Tree,我正在创建一个程序,使用搜索二叉树来跟踪从列表中添加和删除的学生。该程序读取一个文本文件,其中包含特定的命令(添加、删除、计算平均值等),后跟学生姓名、年龄和性别。例如,文本文件的第一行是:E Jake 14 M.E代表注册(add) 我在概念和编码方面都有问题 我有一个queue类,一个queueLL类,它实现了queue类,我有一个camper类,它返回姓名、年龄和性别,并比较每个学生的姓名,最后是我的搜索二叉树类 该问题属于主要类别: import java.io.*; import ja

我正在创建一个程序,使用搜索二叉树来跟踪从列表中添加和删除的学生。该程序读取一个文本文件,其中包含特定的命令(添加、删除、计算平均值等),后跟学生姓名、年龄和性别。例如,文本文件的第一行是:E Jake 14 M.E代表注册(add)

我在概念和编码方面都有问题

我有一个queue类,一个queueLL类,它实现了queue类,我有一个camper类,它返回姓名、年龄和性别,并比较每个学生的姓名,最后是我的搜索二叉树类

该问题属于主要类别:

import java.io.*;
import java.util.Scanner;


// delcaring some variables 
public class CampPosanivee {

  static String name;

  static String age;

  static String gender;

  static Camper camper = null;
  static double numkids;

  QueueLL q = new QueueLL();

  // creating a method to calculate averages
  static double avgkids(Camper[] campers) {
    double sum = 0;
    for (int i = 0; i < campers.length; i++)
      sum += campers[i].getNumKids();
    if (campers.length == 0)
      return 0;
    return sum / campers.length;
  }

  public static void main(String[] args) throws IOException {
    Camper c1 = new Camper("Kanga", "26", "F");
    Camper c2 = new Camper("Tigger", "28", "M");
    Camper c3 = new Camper("Pooh", "31", "M");
    Camper c4 = new Camper("Rabbit", "30", "M");
    Camper c5 = new Camper("Eeyore", "36", "M");

    Scanner input = new Scanner(System.in);

    System.out.print("Enter the name of File:");
    String filename = input.next();
    System.out.println();

    FileReader inFile = new FileReader(filename);
    Scanner sFile = new Scanner(inFile);
    String lineOfData;

    boolean q = true;
    while (q && sFile.hasNext()) {
      lineOfData = sFile.nextLine();
      if (lineOfData.substring(0, 1).equalsIgnoreCase("h")) {
        System.out.println("How to use this program:");
        System.out.println("Type E to enroll a new camper");
        System.out.println("Type W to withdraw a camper");
        System.out.println("Type D to display age and gender of camper");
        System.out.println("Type A to print average age of campers");
        System.out.println("Type L to list all campers name in alphabetical order");
        System.out.println("Type S to print the number of boys and girls camper");
        System.out.println("Type P to list all camper names in preorder");
        System.out.println("Type Q to quit program");
      } else if (lineOfData.substring(0, 1).equalsIgnoreCase("e")) {


        Scanner file = new Scanner(
                new FileReader("data.txt"));
        int n;
        n = file.nextInt();
        BST tree = new BST();
        for (int i = 0; n < i; i++) {
          Camper x = new Camper(file);
          System.out.println(x);
          tree.insert(x);
        }
      }

    }
  }
值定义为我的Camper类文件中的3个字符串(姓名、年龄、性别)。任何帮助都将不胜感激

露营车的编辑代码:

public class Camper implements Comparable<Camper> {


private String name;
private String age; 
private String gender;
private double numKids; 

public Camper (String n, String a,String g){

   name = n; 
   age = a; 
   gender = g; 
}
public String getName()
{
return name; 
}

public String getAge()
{
return age; 
}

public String getGender()

{
return gender; 
}
public double getnumKids()
{
return numKids;
}
public int compareTo(Camper other)
{
   if (getName().compareTo(other.getName()) > 0) 
   {
      return 1; 
   }
   else if (getName().compareTo(other.getName()) < 0 )
   {
      return -1; 
   }
   else 
      return 0; 
}



}
公共级露营车实现可比性{
私有字符串名称;
私弦时代;
私人字符串性别;
私有双numKids;
公共露营车(n线、a线、g线){
name=n;
年龄=a;
性别=g;
}
公共字符串getName()
{
返回名称;
}
公共字符串getAge()
{
回归年龄;
}
公共字符串getGender()
{
返回性别;
}
公共双getnumKids()
{
返回numKids;
}
公共内部比较(露营车其他)
{
如果(getName().compareTo(other.getName())>0)
{
返回1;
}
else if(getName().compareTo(other.getName())<0)
{
返回-1;
}
其他的
返回0;
}
}

很抱歉迟了答复

首先,它们被称为二叉搜索树,而不是搜索二叉树:P


至于实际的错误,Camper类中只有一个构造函数,它需要三个字符串——您试图向它传递一个文件。它无法猜测如何解析该文件并获得正确的三个字符串-您要么需要在调用代码中这样做,要么编写另一个可以处理文件的构造函数。

首先,它们被称为二叉搜索树,而不是搜索二叉树:P


至于实际的错误,Camper类中只有一个构造函数,它需要三个字符串——您试图向它传递一个文件。它无法猜测如何解析该文件并获得正确的三个字符串-您要么需要在调用代码中这样做,要么编写另一个可以处理文件的构造函数。

什么是Camper类?你能附加它的代码吗?Camper没有带Scanner参数的构造函数?好的,我为Camper添加了代码。希望这能带来一些澄清。什么是露营课程?你能附加它的代码吗?Camper没有带Scanner参数的构造函数?好的,我为Camper添加了代码。希望这能带来一些澄清。
public class Camper implements Comparable<Camper> {


private String name;
private String age; 
private String gender;
private double numKids; 

public Camper (String n, String a,String g){

   name = n; 
   age = a; 
   gender = g; 
}
public String getName()
{
return name; 
}

public String getAge()
{
return age; 
}

public String getGender()

{
return gender; 
}
public double getnumKids()
{
return numKids;
}
public int compareTo(Camper other)
{
   if (getName().compareTo(other.getName()) > 0) 
   {
      return 1; 
   }
   else if (getName().compareTo(other.getName()) < 0 )
   {
      return -1; 
   }
   else 
      return 0; 
}



}