当前位置: 首页 > 知识库问答 >
问题:

从驱动程序访问方法时出现问题

龙兴学
2023-03-14

我正在创建一个程序,它从一个文件中获取输入(在我的例子中,是学生姓名及其相关联的编号),并以预购形式(使用/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();

共有1个答案

通宾白
2023-03-14

来自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时区一起使用,必