2

我想从列表中检索值。但我无法从列表中获取值。我将通过将值传递给方法从另一个类调用此方法并将其添加到 arraylist 中。现在,当我尝试检索该值时,不会返回任何内容。

public class No 
{
    private double km;
    private String stringvalue;

    List<String> k1=new ArrayList();
    List<String> k2=new ArrayList();

    public void clusterform(int i,String km1,String km2)
    {
        int val1=km1.length();
        int val2=km2.length();
        int centroid=i;

        if(val1>centroid)
        {
            if(val1>val2)
            {
                k1.add(km1);
                k2.add(km2);

                System.out.println("hi");
            }
            else
            {
                k2.add(km1);
            }
        }
        else
        {
            k2.add(km1);
            k1.add(km2);
        }

        No n=new No ();

        n.call();
    }

    public void call()
    {
        Iterator getv = k1.iterator();
        while(getv.hasNext())
        {
            System.out.println(getv.next());
        }
    }
}
4

2 回答 2

2

原因是这条线:

No n=new No ();
n.String();

这是创建新对象,并以具有 size 的方式No对其进行初始化。所以方法是什么都不打印。您应该直接调用该方法,而不用以下方式创建对象:ArrayList k10n.String()String()

String()

作为旁注,我建议您坚持使用 java 命名约定。例如方法名称应该以小写字母开头。类名应以大写字母开头。还有很多。看这个官方教程详细了解java命名约定。

于 2013-04-28T21:12:38.337 回答
0

k1k2是类的实例变量No,所以当你调用No n=new No ();n 时,它会变成一个带有新(空)列表的类的新实例。可能您想调用类的当前实例的方法 StringNo而不是创建新实例。

于 2013-04-28T21:13:14.983 回答