【问题标题】:I am not able to retrieve array values from List [closed]我无法从列表中检索数组值 [关闭]
【发布时间】:2013-04-22 11:37:12
【问题描述】:

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

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());
        }
    }
}

【问题讨论】:

  • 你什么时候向这些数组列表添加值?
  • 当我调用 clusterform 方法时。
  • 我把 else 改成了 else if and no use

标签: java arraylist iterator


【解决方案1】:

原因是这条线:

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

这是创建No 的新对象,其ArrayList k1 被初始化为大小为0。所以n.String() 方法没有打印任何内容。您应该直接调用String() 方法,而不用以下方式创建对象:

String()

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

【讨论】:

  • 不,静态在这里什么都不做。您应该直接调用方法String(),而不是通过No的对象调用它
【解决方案2】:

k1k2No 类的实例变量,因此当您调用No n=new No (); 时,n 将成为具有新(空)列表的类的新实例。可能你想调用类No的当前实例的方法String而不是创建一个新实例。

【讨论】:

    猜你喜欢
    • 2012-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-17
    • 2015-02-02
    相关资源
    最近更新 更多