我正在创建一个程序,它从一个文件中获取输入(在我的例子中,是学生姓名及其相关联的编号),并以预购形式(使用/iterator)、后置+后置形式(使用/recursive)打印出来。在我的驱动程序中,我已经成功地创建和添加了学生的名字+关联号码+用预购迭代器打印出来。然而,我的问题是当我尝试打印这两个递归方法时,我得到一个“Void type not allowed here”错误。这两个方法存储在一个BinaryTree类中,但需要由驱动程序从BinarySearchTree调用,我使用了super.“insert method name”(下面还有它的接口)。
驱动程序(最后2条打印语句出错):
package driver;
import java.io.*;
import java.util.*;
public class Driver {
private static Scanner file;
static PrintWriter outputFilePrinter;
static Scanner inputFileScanner;
public static void main(String[] args) throws FileNotFoundException {
Scanner inFile; //Declaring scanner obj
PrintWriter printWriter = new PrintWriter("output.txt"); //Text file where results are printed to
inFile = new Scanner(new File("input.txt")); //Text file where student names and associated number are read from
BinarySearchTreeInterface<String> aTree = new BinarySearchTree<>() {}; //Giving access to BinarySearchTree methods
while (inFile.hasNext()) { //Scans input file
String name = inFile.nextLine(); //Assigns contents to string obj
aTree.add(name); //Add string to a tree
} //End while
Iterator<String> traverse = aTree.getPreorderIterator(); //Using iterator to print tree in an "preorder" fashion
while (traverse.hasNext())
printWriter.println(traverse.next()); //Prints tree
printWriter.println("Postorder Recursive: " + aTree.postorderTraverse());
printWriter.println("Inorder Recursive: " + aTree.inorderTraverse());
printWriter.close(); //Closes file
} //End Main
} //End Driver
BinaryTree类递归方法:
public void inorderTraverse() {
inorderTraverse(root);
}
public void inorderTraverse(BinaryNode<T> node) {
if (node != null) {
inorderTraverse(node.getLeftChild());
System.out.println(node.getData());
inorderTraverse(node.getRightChild());
}
}
public void postorderTraverse() {
postorderTraverse(root);
}
public void postorderTraverse(BinaryNode<T> node) {
if (node != null)
return;
postorderTraverse(root.getLeftChild());
postorderTraverse(root.getRightChild());
System.out.println(root.getData());
}
BinarySearchTree类,在该类中,我使驱动程序可以访问两个递归方法:
public void inorderTraverse() {
super.inorderTraverse();
}
public void postorderTraverse() {
super.postorderTraverse();
}
BinarySearchTreeInterafce:如何在接口中列出它们
public void postorderTraverse();
public void inorderTraverse();
来自BinarySearchTree类的inorderTraverse()和postorderTraverse()没有返回PrintWriter.PrintLN所需的字符串。
将返回类型从void更改为String,并从超类返回结果:
public String inorderTraverse() {
return super.inorderTraverse();
}
public String postorderTraverse() {
return super.postorderTraverse();
}
别忘了在界面中也进行更改
在下面的代码中,我想将驱动程序从main方法访问到同一类中的另一个方法。要清除错误,我将WebDriver=newfirefoxdriver();里面有另一种方法吗??。请帮帮我。提前感谢您抽出时间
我可以通过本地J控制台访问Mbean,但无法从远程主机访问MBEANS。 我的配置: 远程进程:服务:jmx:远程处理-jmx://10.32.222.111:4447 我将用户添加到管理和应用领域 测试=2b1be81e1da41d4ea647bd82fc8c2bc9 但当我尝试连接它说:连接失败:重试 当我使用远程进程为:10.32.222.111:4447在服务器上提示警告: 16: 29:
问题内容: 我知道已经有类似的问题,但是那里的答案并没有帮助我。因此,请介意查看我的特定问题吗? 我对Hibernate的使用还不是很熟练,并且在尝试使用Hibernate 4.3和PostgreSQL为本地数据库创建测试数据时遇到了一个问题。 我有另一个项目,我以完全相同的方式进行操作,并且在那里工作,因此我进行了完全相同的设置,但使用了另一个数据库,但是现在在我的当前项目中,我得到以下异常:
我有一个在Synology NAS上运行的Mariadb数据库,我想从安装在Mac上的Matlab访问它。 以下是我所遵循的步骤: 下载了MariaDB连接器/J 2.3.0 mariadb-java-client-2.3.0.jar 在/library文件夹中创建了一个MyDrivers文件夹,并将驱动程序移动到那里 将上述文件夹添加到路径变量 将驱动程序的完整路径添加到CLASSPATH变量
问题内容: 一些背景: 我有一个在Tomcat 7上运行的Java 1.6 Webapp。数据库是MySQL 5.5。以前,我使用Mysql JDBC驱动程序5.1.23连接到数据库。一切正常。我最近升级到Mysql JDBC驱动程序5.1.33。升级后,Tomcat将在启动应用程序时引发此错误。 为什么会这样呢? 问题答案: 显然,要使MySQL JDBC驱动程序的5.1.33版与UTC时区一起
问题内容: 一些背景: 我在Tomcat 7上运行了Java 1.6 webapp。数据库是MySQL 5.5。以前,我使用Mysql JDBC驱动程序5.1.23连接到数据库。一切正常。我最近升级到Mysql JDBC驱动程序5.1.33。升级后,Tomcat将在启动应用程序时引发此错误。 为什么会这样呢? 问题答案: 显然,要使MySQL JDBC驱动程序5.1.33版与UTC时区一起使用,必