Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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 在ArrayList中循环以获取项目编号_Java_Loops_Arraylist_Get - Fatal编程技术网

Java 在ArrayList中循环以获取项目编号

Java 在ArrayList中循环以获取项目编号,java,loops,arraylist,get,Java,Loops,Arraylist,Get,错误没有返回所需的语句,因此我需要thing来输出一个正整数,该整数将能够复制数组列表,这将非常感谢thatnks @Override public String getDescription(int itemNumber) { if(isKnownItemNumber(itemNumber) == true) { for (recordItem i : itemList) { if(i.getItemNumber() == ite

错误没有返回所需的语句,因此我需要thing来输出一个正整数,该整数将能够复制数组列表,这将非常感谢thatnks

@Override
public String getDescription(int itemNumber)    {
    if(isKnownItemNumber(itemNumber) == true)   {
        for (recordItem i : itemList)    {
            if(i.getItemNumber() == itemNumber)    {
                return description;
            }
        }
    }
    return "does not exist";
}

   @Override
public void setDescription(String description) {
    this.description = description;
} 
下面是填充的arraylist的主要方法:

package Purchase;
import java.util.*;

import javax.swing.SwingUtilities;


public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable()   {


        public void run() {
            gui.PosGUI.makeAndShowGUI();


            Items.newItems.recordItem(01,"banana",1.00,1);
            , "Mayonnaise", 2.00, 0);



        }

    });

}
}
getter方法的通常约定是不接受任何参数,并返回ask字段

您的
getItemNumber
方法接受一个参数,并将其作为结果返回,这没有意义

public int getItemNumber(int itemNumber) {
    return itemNumber;
}
用公共getter替换此方法:

public int getItemNumber() {
        return itemNumber;
    }
您的
isKnownItemNumber
方法将变为:

public boolean isKnownItemNumber(int itemNumber)    {

    //assert itemNumber >= 0 : "Item Number must be greater than or equal to 0";
    for (recordItem i : itemList)    {
        if (i.getItemNumber() == itemNumber)   {
            return true;
        }

    }
    return false;
}

您的记录方法可能还有另一个错误。您可以在此项上设置参数,而不是在您创建的新项上设置参数。请尝试以下方法:

@Override
public void recordItem(int itemNumber, String description, double unitPrice, int sort)  {

   if ((isKnownItemNumber(itemNumber) == false) && (unitPrice > 0) && (sort == 0 || sort == 1)) {
       Items theItems = new Items();
       theItems.itemNumber = itemNumber;
       theItems.description = description;
       theItems.unitPrice = unitPrice;
       theItems.sort = sort;
       itemList.add(theItems);
   }

}
另一个bug:
返回i.description而不是
返回说明

public String getDescription(int itemNumber)    {
    if(isKnownItemNumber(itemNumber) == true)   {
        for (recordItem i : itemList)    {
            if(i.getItemNumber() == itemNumber)    {
                return i.getDescription();
            }
        }
    }
    return "does not exist";
}

 public String getDescription(){
    return description;
}

为什么getItemNumber函数接受参数??它应该返回item的itemNumber,您将一个参数传递给函数并返回相同的参数..\n什么是recordItem?标记错误的第一条注释。在没有参数的情况下尝试,或返回此.itemNumber;尽管查看代码,您的项目列表中应该只有香蕉。顺便说一下,最好将isItemNumber(…)==false更改为
!isItemNumber(…)
。相同,但看起来更好。@anopll好的,我做了这些更改(在上面编辑),但现在它只返回“不存在”。这是因为您只记录到静态项:-)。因此,只保存最新的记录(以及列表中的许多新项目(空)。好的,我做了这些更改(在上面编辑),但现在它只返回“不存在”。这一定不是完整的错误消息,什么不存在?好吧,在getDescription中,如果它没有找到具有该数字的项,则返回“不存在”哦,是的,很抱歉我错过了该消息。出于某些原因,该消息输出null是的,您应该返回I.description.:-。否则返回静态项的说明,该说明为空。查看edit.it,它不允许我执行i.description,但允许我执行i.getdescription,但仍然返回“不存在”添加一个普通的getdescription()。现在应该可以了。我忘了您可能无法访问字符串描述。