gpt4 book ai didi

java - 函数不会引用我正在创建的节点的链表

转载 作者:太空宇宙 更新时间:2023-11-04 12:21:45 25 4
gpt4 key购买 nike

整个夏天读了一本关于 Java 数据结构的书,我在链表的基础知识和使用节点创建链表方面遇到了困难。

具体来说,我试图弄清楚如何将未排序整数的文件传递到函数中,对它们进行排序,然后打印排序后的链表。我知道我可能会让这个变得比需要的更复杂,但我只是不明白这些节点到底是如何链接的,以及如何返回它们。

我想我可以创建一个列表对象并将其用作对第一个节点的引用,第一个节点又将引用前一个节点,直到列表末尾(用 null 表示)。这是我试图从书中遵循的逻辑,但有些东西没有点击。

当我在 main 中调用 readFile 方法时,出现错误,该方法未定义。这怎么可能?

import java.util.Scanner;
import java.util.List;

public class Node {
int value;
Node next;

/**
* Constructor
* @param value The element to store in this node, an integer from file
*/
public Node(int value) {
this.value = value;
next = null;
}

public static Node first;
public static Node last;

public void linkedList() {
first = null;
last = null;
}

/**
* function sorts integers
* @param inputFile file of integers from user
* @return linked list of sorted integers
*/
public static Node readFile(Scanner inputFile) {

while (inputFile.hasNext()) {
int data = inputFile.nextInt();
if (first == null) {
first = new Node(data);
last = first;
}
if (data < first.value) {
first.next = first;
first = new Node(data);
}
if (data > first.value) {
last.next = new Node(data);
last = last.next;
}
}
return first;
}

/**
* function prints linked list
*/
public void print() {
Node ref = first;

while (ref != null) {
System.out.println(ref.value + " ");
ref = ref.next;
}
}
}

这是我的主要驱动力:

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

public class listTesting {
private static final String FILENAME = "numbers.txt";

public static void main(String[] args) throws IOException {

Scanner keyboard = new Scanner(System.in);

System.out.print("Opening " + FILENAME);
File file = new File(FILENAME);
Scanner inputfile = new Scanner(file);

linkedList list = new linkedList();

// error here stating this method is undefined ??
list = readFile(inputfile);

System.out.println("\nThe sorted linked list: ");
list.print();
}
}

最佳答案

在类 listTesting 中没有任何与 Node 类的链接。对于这一行

list = readFile(inputfile);

编译器尝试在 listTesting 类中查找静态方法。

下一个我不清楚的项目:

linkedList list = new linkedList(); 

// error here stating this method is undefined ??
list = readFile(inputfile);

您使用默认构造函数创建列表变量,但紧接着使用 readFile 方法的结果更改它。同样在 Node 类中 readFile 返回 Node 类(不是 linkedList)。

我发现您对 Java 还处于初级阶段,所以请仔细阅读有关 Java 的书籍(甚至尝试在数据结构之前重复 Java 基础知识)。

关于java - 函数不会引用我正在创建的节点的链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38799202/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com