Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在遍历对象数组列表时如何指向对象_Java - Fatal编程技术网

Java 在遍历对象数组列表时如何指向对象

Java 在遍历对象数组列表时如何指向对象,java,Java,我试图构建这个类,其中Product是一个对象,getProducts是Product对象的ArrayList 现在,在这个例子中,我尝试遍历ArrayList以找到与输入userinput同名的产品,一旦找到了相同的产品,我就将该产品绑定到产品p,就像使用指针一样。 为此,我设置了一个新的指针对象,指针p=null。我必须初始化它,因为后续的位需要p.getName和其他方法 然而,在这样做时,我总是得到一个空指针异常。有没有更好的办法 public class purchase implem

我试图构建这个类,其中Product是一个对象,getProducts是Product对象的ArrayList

现在,在这个例子中,我尝试遍历ArrayList以找到与输入userinput同名的产品,一旦找到了相同的产品,我就将该产品绑定到产品p,就像使用指针一样。 为此,我设置了一个新的指针对象,指针p=null。我必须初始化它,因为后续的位需要p.getName和其他方法

然而,在这样做时,我总是得到一个空指针异常。有没有更好的办法

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;
            }
        }}
看见