0

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;
    }
}
4

3 に答える 3

2

静的コンテキストから非静的メソッドを呼び出すことはできません。する方法nodeArray() static。それはあなたの問題を解決します。

また、非静的フィールド、つまり、、、、への静的参照を作成することはできNode1ませNode2ん。だからそれらも作ってください。Node3Node4static

nodeArray.get(i).label間違っているはずですnodeList.get(i).label

于 2012-05-26T23:23:45.587 に答える
1

これは奇妙です:

nodeArray.get(i)

nodeArray は関数です。どうすればコンパイルできますか?そのため、関数と変数の両方に適切な名前を付けることが重要です。

また、これはリストなので、次のように foreach を使用できます: http://www.leepoint.net/notes-java/flow/loops/foreach.html

ああ、メイン関数では、クラスの新しいインスタンスを作成して使用するか、すべてのメソッドと変数を静的に設定する必要があります。

于 2012-05-26T23:24:08.847 に答える
1

nodeArray() メソッドは 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);
    }
}
于 2012-05-26T23:27:52.207 に答える