簡體   English   中英

如何在構造函數類中創建數組?

[英]How to create an Array in the constructor class?

我正在創建一個圖書清點程序。 我有兩個類,一個是主類,另一個是構造函數類名稱Item 在主類上,我創建了一個數組(Item[] book = new Item[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;
}

我如何使Item[] iArray與主類中的書本數組同步?


public class Item {


private String itemCode;
private String description;
private int quantity;
private double costprice;
private double sellprice;
private String status = "Available";
private boolean check;
private double  discount;


public Item(){
    this("A000","default",0,0.00,0.00,0.25,"Available");
}

//construtor with parameter
public Item(String itemCode, String description, int quantity, double costprice, double sellprice, double discount, String status){
    this.setItemCode(itemCode);
    this.setDescription(description);
    this.setQuantity(quantity);
    this.setCostprice(costprice);
    this.setSellprice(sellprice);
    this.setStatus(status);
    this.setDiscount(discount);
}


//setter and getter methods
public void setItemCode(String itemCode){
    this.itemCode = itemCode;
}

public String getItemCode(){
    return this.itemCode;
}

public void setDescription(String description){
    this.description = description;
}

public String getDescription(){
    return this.description;
}

public void setQuantity(int quantity){
    this.quantity = quantity;
}

public int getQuantity(){
    return this.quantity;
}

public void setCostprice(double costprice){
    this.costprice = costprice;
}

public double getCostprice(){
    return this.costprice;
}

public void setSellprice(double sellprice){
    this.sellprice = sellprice;
}

public double getSellprice(){
    return this.sellprice;
}

public void setStatus(String status){

    this.status = status;
}

public String getStatus(){
    return this.status;
}

public void setDiscount(double discount){
    this.discount = discount;
}

public double getDiscount(){
    return this.discount;
}

public void setCheck(boolean check){
    this.check = check;
}

public boolean getCheck(){
    return this.check;
}

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;
            numberofobject++;
        }
    }

    return c;
}


    public void displaymenu(){
    System.out.println("Menu");
    System.out.println("1. Add New Item");
    System.out.println("2. Search");
    System.out.println("3. Edit Details");
    System.out.println("4. Edit Quantity");
    System.out.println("5. Stop Sell");
    System.out.println("6. List");
    System.out.println("7. Exit");
}*/



public String toString(){
    String msg = "";
    msg = this.getItemCode()+"\t\t\t\t"+this.getDescription()+"\t\t\t\t"+this.getQuantity()+"\t\t\t\t"+this.getCostprice()+"\t\t\t\t"+this.getSellprice()+"\t\t\t\t"+this.getDiscount()+"\t\t\t\t"+this.getStatus();
    return msg;
}

這是我的Item類。


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++;

        }

當我添加第二個項目時,出現錯誤(線程“ main”中的異常java.lang.NullPointerException),

怎么解決呢?

您的方法不會執行您想要的操作,因為即使找到了項目代碼,循環仍會繼續。 您可能想要這樣的東西:

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

請注意,您發布的方法名稱似乎很奇怪,因為它不會在任何地方添加任何內容。

您可能還考慮使用List<Item>ArrayList等)代替Item[]

我不確定我是否了解您要查找的內容,因此,如果我的答案與您的答案無關,請對其進行評論,然后將其刪除。

我假設您正在嘗試存儲信息:將帶有其代碼的新項目添加到數組中。 但我不確定您是否是:

  • 在插入之前嘗試確保項目在數組中的唯一性:

    也許您可以使用一組代碼,它將簡化您的問題,只需使用.contains()檢查,然后添加或不添加

  • 嘗試將其添加到列表中,如果已經存在,請執行某些操作(增加代碼書的數量?)

    也許您可以使用HashMap,其中代碼作為鍵,書作為項目。

在當前狀態下,方法addItem不會添加任何內容,如果數組中的最后一本書與您的代碼匹配,則僅返回...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM