有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

从Java中的方法返回列表时遇到问题

我正在学习java中的列表,但我很难像任何原始数据类型那样从方法返回它。我要做的就是返回一个节点列表,然后打印出它们所有的标签。我做错了什么

import java.util.ArrayList;

import java.util.List;

public class TestingArrays 
{

    List<Node> myList1  = new ArrayList<Node>();

    List<Node> myList2 = new ArrayList<Node>();

    List<Node> myList3 = new ArrayList<Node>();

    List<Node> myList4 = new ArrayList<Node>();

    private Node Node1 = new Node("One", myList1);
    private Node Node2 = new Node("Two", myList2);
    private Node Node3 = new Node("Three", myList3);
    private Node Node4 = new Node("Four", myList4);

    public static void main(String arg[])
    {
        List<Node> nodeList = nodeArray();

        for (int i = 0; i < nodeList.size(); i++)
        {
            System.out.println(nodeArray.get(i).label);
        }
    }

    public List<Node> nodeArray()
    {
        List<Node> tempList = new ArrayList<Node>();
        tempList.add(Node1);
        tempList.add(Node2);
        tempList.add(Node3);
        tempList.add(Node4);
        return tempList;
    }
}

共 (3) 个答案

  1. # 1 楼答案

    noderRay()方法是用于TestingArrays对象的方法。所有节点和列表都是TestingArrays对象的属性

    你需要创建一个TestingArrays对象来访问这些东西

    用以下代码替换主方法:

    public static void main(String arg[])
    {
        List<Node> nodeList = new TestingArrays().nodeArray();
    
        for (int i = 0; i < nodeList.size(); i++)
        {
            System.out.println(nodeList.get(i).label);
        }
    }
    
  2. # 2 楼答案

    不能从静态上下文调用非静态方法。制作方法nodeArray(){}。那会解决你的问题

    此外,不能对非静态字段进行静态引用,即Node1Node2Node3Node4。所以也让他们static

    而且nodeArray.get(i).label是错误的,因为它应该是nodeList.get(i).label

  3. # 3 楼答案

    这很奇怪:

    nodeArray.get(i)
    

    noderray是一个函数。它怎么能编译呢?这就是为什么给函数和变量起好名字很重要

    此外,因为它是一个列表,所以可以使用foreach,如下所示: http://www.leepoint.net/notes-java/flow/loops/foreach.html

    哦,在main函数中,您应该创建一个新的类实例并使用它,或者将所有的方法和变量设置为静态