Java 在遍历对象数组列表时如何指向对象
我试图构建这个类,其中Product是一个对象,getProducts是Product对象的ArrayList 现在,在这个例子中,我尝试遍历ArrayList以找到与输入userinput同名的产品,一旦找到了相同的产品,我就将该产品绑定到产品p,就像使用指针一样。 为此,我设置了一个新的指针对象,指针p=null。我必须初始化它,因为后续的位需要p.getName和其他方法 然而,在这样做时,我总是得到一个空指针异常。有没有更好的办法Java 在遍历对象数组列表时如何指向对象,java,Java,我试图构建这个类,其中Product是一个对象,getProducts是Product对象的ArrayList 现在,在这个例子中,我尝试遍历ArrayList以找到与输入userinput同名的产品,一旦找到了相同的产品,我就将该产品绑定到产品p,就像使用指针一样。 为此,我设置了一个新的指针对象,指针p=null。我必须初始化它,因为后续的位需要p.getName和其他方法 然而,在这样做时,我总是得到一个空指针异常。有没有更好的办法 public class purchase implem
public class purchase implements Command {
@Override
public String execute(VendingMachine v, String userinput){
Product p=null;
for( Product i : v.getProducts()){
if(i.getName().equals(userinput)) {
p=i;
}
break;
编辑-有几个人提到我应该使用.equals,是的,我忽略了这一点,但是,这并不是造成问题的原因。
还对问题进行了编辑,使其更加全面。您在此处获得空指针并不是因为分配指针时出错,而是希望比较字符串的指针值,而不是它们的内容。要评估基于内容的相等性,请在两个字符串之间使用.equals函数。我认为应该在if语句中添加break。否则,它总是在检查第一个元素后停止循环,如果第一个元素与条件不匹配,则不会为p分配任何内容,它将为null 正如jarmod所说,字符串比较必须通过.equals方法完成。所以你必须有这样的东西:
@Override
public String execute(VendingMachine v, String userinput){
Product p
for( Product i : v.getProducts()){
if(i.getName().equals(userinput)) {
p=i;
break;
}
}}
看见