Java 如何在构造函数类中创建数组?

Java 如何在构造函数类中创建数组?,java,arrays,Java,Arrays,我正在创建一个图书盘点计划。 我有两个类,一个是主类,另一个是构造函数类名Item。 在主类上,我创建了一个数组(Item[]book=newitem[100])来存储我的输入。 在我的Item类中,我想在下面创建一个函数 public boolean addItem(Item[] iArray, String itemCode){ boolean c = false; for(int i=0; i<iArray.length; i++){ if(iA

我正在创建一个图书盘点计划。 我有两个类,一个是主类,另一个是构造函数类名
Item
。 在主类上,我创建了一个数组
(Item[]book=newitem[100])
来存储我的输入。 在我的
Item
类中,我想在下面创建一个函数

public boolean addItem(Item[] iArray, String itemCode){

    boolean c = false;


    for(int i=0; i<iArray.length; i++){
        if(iArray[i].getItemCode().equals(itemCode)){
            c = true;
        }
        else{
            c = false;

        }
    }

    return c;
}

这是我的项目类


import java.util.*;
公务舱司机{
/**
*@param args
*/
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
整数选择,数量,NOI=0;
双人cprice、雪碧、折扣;
字符串itc,name,status=“可用”;
布尔检查=真;
项目[]账簿=新项目[100];
扫描仪s1=新的扫描仪(System.in);
做{
项目显示=新项目();
display.displaymenu();
系统输出打印(“请选择菜单:”);
choice=s1.nextInt();
如果(选项==1){
做{
系统输出打印(“请输入项目代码:”);
itc=s1.next();

//对于(int i=0;i,您的方法并不能满足您的要求,因为即使您找到了项代码,循环也会继续。您可能希望这样:

public boolean addItem(Item[] iArray, String itemCode){
    for (Item item : iArray) {
        if (item.getItemCode().equals(itemCode)) {
            return true;
        }
    }
    return false;
}
请注意,您发布的方法的名称似乎很奇怪,因为它没有在任何地方添加任何内容


你也可以考虑使用<代码>列表<代码>(<代码> ARAYLIST/<代码>等),而不是<代码>项目[]/Copy>

< P>我不确定我理解你正在寻找什么,所以如果我的答案是无关的,只评论它,我就删除。

我假设您正在尝试存储信息:将新项及其代码添加到数组中。但我不确定您是否:

  • 在插入项目之前,尝试确保项目在数组中的唯一性:

    也许您可以使用一组代码,这将简化您的问题,只需检查.contains(),然后添加或不添加它

  • 尝试将其添加到列表中,如果它已经存在,则执行一些操作(增加代码的图书数量?)

    也许您可以使用HashMap,将代码作为键,将book作为项


在当前状态下,方法addItem没有添加任何内容,只要返回数组中的最后一本书是否与代码匹配…

问题不太清楚,请尝试改进它。该方法与以下一行代码相同:
return iArray[iArray.length-1].getItemCode().equals(itemCode);
仅当最后一个itemcode等于给定的itemcode时才返回。函数仅返回(int y=0;y<100;++y){iArray[y]=new Item();}它正在创建吗?为什么你的方法在没有添加项目时称为addItem…?是的,实际上此addItem不用于添加项目。它正在查找现有项目代码是否与我的新输入项目代码匹配,它将返回false,因此它将再次循环,希望你输入新项目代码。但问题是它不会循环,并且有错误或者我刚才展示了。我不知道它有什么问题,但它可以编译并运行。当我输入第二项代码时,错误就出现了。好的,那么你应该发布堆栈跟踪和NPE出现的行
import java.util.*;
public class Driver {

/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub
    int choice,quantity,NOI=0;
    double cprice,sprice,discount;
    String itc,name,status = "Available";
    boolean check = true;

    Item[] book = new Item[100];



    Scanner s1 = new Scanner(System.in);
    do{
        Item display = new Item();


        display.displaymenu();
        System.out.print("Please Select Menu: ");
        choice = s1.nextInt();

        if(choice==1){

            do{


            System.out.print("Please Enter the Item Code: ");
            itc =  s1.next();

                //for(int i=0; i<book.length; i++){
                //book[i].addItem(book, itc);

                if(display.addItem(book, itc)==true){
                    System.out.println("the book item code already exist."+NOI);
                    check = false;
                }
                else
                {
                    check = true;
                } //This is the question where i faced. 
                //}

            }while(check==false);

                   System.out.print("Please Enter the Description: ");
            name = s1.next();
            System.out.print("Please Enter the Quantity: ");
            quantity = s1.nextInt();
            System.out.print("Please Enter the Cost Price: ");
            cprice = s1.nextDouble();
            System.out.print("Please Enter the Sell Price: ");
            sprice = s1.nextDouble();
            System.out.print("Please Enter the Discount: ");
            discount = s1.nextDouble();*/

            book[NOI] =  new Item(itc,name,quantity,cprice,sprice,discount,status);
            NOI++;

        }
public boolean addItem(Item[] iArray, String itemCode){
    for (Item item : iArray) {
        if (item.getItemCode().equals(itemCode)) {
            return true;
        }
    }
    return false;
}