JBTALKS.CC

标题: 有谁可以帮我解决这问题 [打印本页]

作者: soonlvu    时间: 2009-7-19 02:06 AM
标题: 有谁可以帮我解决这问题
这是class的

public class Item{
       
        private int itemNum;
        private String itemDesc;
        private double sellPrice;
        private int qtyOnHand;
       
        public Item()
        {
                this.itemNum=1;
                this.itemDesc="";
                this.sellPrice=1;
                this.qtyOnHand=1;
        }
       
        public Item(int itemNum,String itemDesc,double sellPrice,int qtyOnHand)
        {               
                this.itemNum=itemNum;
                this.itemDesc=itemDesc;
                this.sellPrice=sellPrice;
                this.qtyOnHand=qtyOnHand;
        }
       
        public int getItemNum(){return itemNum;}
        public void setItemNum(int itemNum){this.itemNum=itemNum;}
        public String getItemDesc(){return itemDesc;}
        public void setItemDesc(String itemDesc){this.itemDesc=itemDesc;}
        public double getSellPrice(){return sellPrice;}
        public void setSellPrice(double sellPrice){this.sellPrice=sellPrice;}
        public int getQtyOnHand(){return qtyOnHand;}
        public void setQtyOnHand(int qtyOnHand){this.qtyOnHand=qtyOnHand;}
        public boolean check(int itemNum)
        {
                if(this.itemNum==itemNum)
                        return true;
                        else
                                return false;
        }
       
        public String toString()
        {               
                return getItemNum()+"\t\t"+getItemDesc()+"\t\t"+getSellPrice()+"\t\t"+getQtyOnHand()+"\n";
        }
       
}
作者: soonlvu    时间: 2009-7-19 02:08 AM
这是test的

我run了,然后才input第一个data就出现这个了

Exception in thread "main" java.lang.NullPointerException
    at testItem.checkDuplicate(testItem.java:29)
    at testItem.main(testItem.java:9)



import java.util.Scanner;
public class testItem{
        public static void main(String [] args)
        {
                Item[] item=new Item[100];
                Scanner input=new Scanner(System.in);
                System.out.println("Enter a book code for store:");
                int bCode = input.nextInt();
                checkDuplicate(bCode,item);
                System.out.println("Enter the book description:");
                String Desc = input.next();       
                System.out.println("Enter the book price:");
                double price = input.nextDouble();       
                System.out.println("How many books??");
                int bQty = input.nextInt();
               
               
                amendData(item);
                searchItem(item);
                sale(bQty,item);
                stock(bQty,item);               
        }
       
        public static void checkDuplicate(int bCode,Item[] item)
        {
       
                        for(int i=0;i<item.length;i++)
                        {
                                if(item.getItemNum()==bCode)
                                {
                                        System.out.println("Sorry!!The item already in data!!!!");
                                        System.out.println("Please enter other item!!");
                                }                                       
                                else
                                        item.setItemNum(bCode);
                        }
                       
        }
       
        public static void amendData(Item[] item)
        {
                Scanner input=new Scanner(System.in);
                System.out.println("Enter book code for need to amend!!");
                int bCode = input.nextInt();
               
                for(int i =0;i<item.length;i++)
                {
                        if(item.getItemNum()==bCode)
                                System.out.println(item);
                }
               
        }
       
        public static void searchItem(Item[] item)
        {
                Scanner input=new Scanner(System.in);
                System.out.println("What book you need???");
                int bCode = input.nextInt();
               
                for(int i =0;i<item.length;i++)
                {
                        if(item.getItemNum()==bCode)
                                System.out.println(item);
                }
        }
       
        public static void sale(int qty,Item[] item)
        {
                Scanner input=new Scanner(System.in);
                System.out.println("How many books you sell??");
                int Sale = input.nextInt();
                qty=item[0].getQtyOnHand()-Sale;
                item[0].setQtyOnHand(qty);
        }
       
        public static void stock(int qty,Item[] item)
        {
                Scanner input=new Scanner(System.in);
                System.out.println("How many books you received??");
                int Stock = input.nextInt();
                qty=item[0].getQtyOnHand()+Stock;
                item[0].setQtyOnHand(qty);
        }
       
       
}
作者: soonlvu    时间: 2009-7-19 02:11 AM
以上的东西是同一题的。。。
要怎样才能解决那个NullPointerException
作者: Super-Tomato    时间: 2009-7-19 04:24 AM
原帖由 soonlvu 于 2009-7-19 02:11 AM 发表
以上的东西是同一题的。。。
要怎样才能解决那个NullPointerException



Exception in thread "main" java.lang.NullPointerException
    at testItem.checkDuplicate(testItem.java:29)
    at testItem.main(testItem.java:9)


這裡已經指出了在 testItem.java:29 行這裡出錯
所以你想想看, 你在一開始 Item[] item = new Item[100] 這裡有沒有甚麼錯

在 checkDuplicate 中你的 item 只是 Array, 卻沒 handle 任何對象
最簡單的驗證我所說的就是在 Item 的 constructor 中加入 print 即可知道, 如 :


        public Item()
        {
                System.out.println("Default constructor");
                this.itemNum=1;
                this.itemDesc="";
                this.sellPrice=1;
                this.qtyOnHand=1;
        }
      
        public Item(int itemNum,String itemDesc,double sellPrice,int qtyOnHand)
        {
                System.out.println("Default constructor with parameters");
                this.itemNum=itemNum;
                this.itemDesc=itemDesc;
                this.sellPrice=sellPrice;
                this.qtyOnHand=qtyOnHand;
        }



再來 getter 所回傳的 value 怎麼都沒有 this. ???
編寫的時候專注些可以減少很多錯誤, 當你寫完之後最好加上 try....catch 避免一些不必要的錯誤資訊出現
如: book code 我不輸入數字而是輸入文字的話, 你看看會出現甚麼錯誤訊息
作者: soonlvu    时间: 2009-7-19 04:58 PM
import java.util.Scanner;
public class testItem{
        public static void main(String [] args)
        {
               
                Scanner input=new Scanner(System.in);
                String s="";
                System.out.println("How many book type need to store:");
                int store = input.nextInt();
                Item[] item=new Item[100];
               
                for(int i=0;i<store;i++)
                {       
                        item=new Item();               
                        System.out.println("Enter a book code for store:");
                        int bCode = input.nextInt();
                        item.setItemNum(bCode);
                        checkDuplicate(bCode,item);
                       
                        System.out.println("Enter the book description:");
                        String Desc = input.next();       
                        item.setItemDesc(Desc);       
                               
                        System.out.println("Enter the book price:");
                        double price = input.nextDouble();
                        item.setSellPrice(price);       
                               
                        System.out.println("How many books??");
                        int bQty = input.nextInt();
                        item.setQtyOnHand(bQty);
                               
                        amendData(item);
                        searchItem(item);
                        sale(i,item);
                        stock(i,item);
                        s=s+item.toString();
                }
                System.out.println(s);               
        }
       
        public static void checkDuplicate(int bCode,Item[] item)
        {
       
                        for(int i=0;i<100;i++)
                        {
                               
                                if(item.getItemNum()==bCode)
                                {
                                        System.out.println("Sorry!!The item already in data!!!!");
                                        System.out.println("Please enter other item!!");
                                }                                       
                                else
                                        item.setItemNum(bCode);
                        }
                       
        }
       
        public static void amendData(Item[] item)
        {
                Scanner input=new Scanner(System.in);
                System.out.println("Enter book code for need to amend!!");
                int bCode = input.nextInt();
               
                for(int i =0;i<item.length;i++)
                {
                        if(item.getItemNum()==bCode)
                                System.out.println(item);
                }
               
        }
       
        public static void searchItem(Item[] item)
        {
                Scanner input=new Scanner(System.in);
                System.out.println("What book you need???");
                int bCode = input.nextInt();
               
                for(int i =0;i<item.length;i++)
                {
                        if(item.getItemNum()==bCode)
                                System.out.println(item);
                }
        }
       
        public static void sale(int i,Item[] item)
        {                               
                Scanner input=new Scanner(System.in);
                System.out.println("How many books you sell??");
                int Sale = input.nextInt();
                int qty=item.getQtyOnHand()-Sale;
                item.setQtyOnHand(qty);
        }
       
        public static void stock(int i,Item[] item)
        {
                Scanner input=new Scanner(System.in);
                System.out.println("How many books you received??");
                int Stock = input.nextInt();
                int qty=item.getQtyOnHand()+Stock;
                item.setQtyOnHand(qty);
        }
}


checkDuplicate我check不到error如果打一样的东西进去。。。。
要用什么办法才可以
作者: Super-Tomato    时间: 2009-7-19 05:28 PM
原帖由 soonlvu 于 2009-7-19 04:58 PM 发表
import java.util.Scanner;
public class testItem{
        public static void main(String [] args)
        {
               
                Scanner input=new Scanner(System.in);
                String s="";
                System.out.println("How many book t ...



你沒看到我上面所說的 getter 問題嗎??
作者: soonlvu    时间: 2009-7-19 07:48 PM
原帖由 Super-Tomato 于 2009-7-19 05:28 PM 发表



你沒看到我上面所說的 getter 問題嗎??

那里我也使set了
可是还是那个问题哦。。。。

我就是set不到data进去那个Item[] item=new Item[100]里面咯。。。
要怎样哦???




欢迎光临 JBTALKS.CC (https://www.jbtalks.cc/) Powered by Discuz! X2.5