【问题标题】:ShoppingList Objects and ClassesShoppingList 对象和类
【发布时间】:2020-03-24 05:01:46
【问题描述】:

公共类 ShoppingList{

String store;
int noItems;
String[]itemNames;
int [] itemCounts;

ShoppingList(){
store="";
noItems=0;
itemNames=new String [100];
itemCounts= new int [100];
}
ShoppingList(String str, int no){
    store=str;
    noItems=no;
} 
public String [] addItem(String article, int number ){

    for(int i=0; i<itemNames.length-1; i++){
        itemNames[i]=article;
        itemCounts[i]=number;       
    }
    return itemNames;
}
public int noTotalItems(){
    int anzahl=0;
    noItems=anzahl;
    for(int m=0; m<itemCounts.length-1; m++){
        anzahl=anzahl+itemCounts[m];
    }
    return anzahl;
}
public int getNumberOf(String produkt){
    int zahl=0;
    for(int k=0; k<itemNames.length-1; k++){
        if(itemNames[k]==produkt){
            zahl=itemCounts[k];
            return zahl;
        }
    }
    return zahl;
}
public String [] toString(ShoppingList l){
    return itemNames;
}

}

**公共类 ShoppingListTest{

public static void main (String [] args){
    ShoppingList l=new ShoppingList("Supermarkt", 100);
    l.addItem("Prosecco", 3);
    l.addItem("Milk", 4);
    l.addItem("Wine", 5);
    l.addItem("Eggs", 4);
    Out.println(l);
    Out.println("#total items: "+l.noTotalItems());
    Out.println("#Milk: "+l.getNumberOf("Milk"));
    Out.println("#Wine: "+l.getNumberOf("Wine"));
}

}**

大家好!如果您能帮助我解决我的问题,我将不胜感激。这是我所有类的代码,但是当我编译 ShoppingListTest 时,我收到以下错误:“线程中的异常”main”java.lang.NullPointerException 在 ShoppingList.addItem(ShoppingList.java:25) 在 ShoppingListTest.main(ShoppingListTest.java:5)" 我不允许创建列表,我必须将项目添加到字符串数组“itemNames”。

【问题讨论】:

    标签: arrays string class object add


    【解决方案1】:

    这行:ShoppingList(String str, int no){需要改为:ShoppingList(String str, int no) { this(); // &lt;-- HERE

    基本上,在您的测试中,您使用的构造不会初始化所需的数组,因此导致它们为null

    在您的参数化构造函数中调用this() 将调用您拥有的无参数构造函数,进而初始化所需的数组和其他变量。

    【讨论】:

    • ShoppingList@2aae9190 我无法打印商店名称“Supermarkt”而不是我得到类似的东西。如果您也能解决这个问题,我将不胜感激。我试图创建一个额外的类,但它不起作用。
    • @huettl:当您在执行Out.println(l) 时,据我所知,该方法会打印到控制台。这在内部调用了ShoppingList 类的toString() 方法。您将需要覆盖您自己的 toString() 方法版本。
    猜你喜欢
    • 2017-09-13
    • 2019-07-31
    • 2012-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-05
    • 2016-06-06
    • 1970-01-01
    相关资源
    最近更新 更多