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