我想从List中检索值。但我无法从列表中获取值。我将通过将值传递给方法并将其添加到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());
}
}
}
答案 0 :(得分:2)
原因是这条线:
No n=new No ();
n.String();
这是创建No
的新对象,其ArrayList
k1
已初始化,其大小为0
。所以n.String()
方法什么都不打印。您应该直接调用String()
方法而不用以下方式创建对象:
String()
作为旁注,我建议你坚持使用java命名约定。例如,方法名称应以小写字母开头。类名应以大写字母开头。还有很多。请查看此official tutorial以详细了解Java命名约定。
答案 1 :(得分:0)
k1
和k2
是类No
的实例变量,因此当您调用No n=new No ();
时,n将成为具有新(空)列表的类的新实例。您可能希望调用类No
的当前实例的方法String,而不是创建新实例。