求教如何用for循環實例一堆對象

我想寫一個商店商品錄入,先自定義一個Goods類,添加了各種商品屬性作為成員變量,以及用來賦值的構造方法。  

接著在shopmanagemet這個類中的main方法里邊建立了一個Goods類數組,數量未知,就指向了null,再建一個for循環,for循環條件是(;;)目的是為了無限循環,for循環的目的是通過不斷地實例化Goods類創建對象。保存錄入的商品屬性。因為不知道最后自己要錄入多少個商品,就在for循環里設置了一個if條件語句,當輸入N則break跳出循環,也就停止了錄入。    

問題來了,怎么樣實例化,我實例化出來的總是說空指針,老報錯,兩天了解決不了、  

求教編寫個用for循環實例化某個類,創建一堆對象的例子,使用for方法,不出錯


回復討論(解決方案)

香港彩票透码 www.kptln.icu 別用數組,用ArrayList就可以,記得不要指向null。


   for(int i=0;i<100;i++){
      Good g=new Good();
}


   for(int i=0;i<100;i++){
      Good g=new Good();
}



那么有一個問題,每個對象名都是g,那么怎么在后續添加查詢的時候區分,那不就歧義重復,也用不了,這個方法不對

建議使用ArrayLIst集合,這樣可以解決數量問題,并且方便。
ArrayList<Goods> goodsList  = new ArrayList<Goods>();
for(;;){
Goods g = new Goods();
goodsList.add(g);
}



   for(int i=0;i<100;i++){
      Good g=new Good();
}

 


那么有一個問題,每個對象名都是g,那么怎么在后續添加查詢的時候區分,那不就歧義重復,也用不了,這個方法不對

你了解一下集合就很好弄了,數組是固定長度,不適合做這些,要么你可以定義數組長度特別大,也可以弄,但是不建議

Good g[] = new Good[1000];
for(int i=0; i<1000; i++){
      g[i] = new Good[];
}

能否貼出你的代碼一觀

1.建立一個商品的實體類,里面包含你要的屬性
2.建立一個類,聲明一個map
3.聲明一個變量i用來計數
4.循環往map里面put對象 key為goods+i,value為new goods()
5.結束

維護很方便,用goods加對應的編號就可以取出對應的對象。不懂可以繼續問。

   for(int i=0;i<100;i++){
      Good g=new Good();
}



你這個是無意義的,你看看定義的變量是局部的,出了循環就沒什么作用了,你在循環外也用不了

你目前要了解的一點是,數組長度是死的,而且你必須定,不存在什么后面來定,不先確定長度,怎么知道給你分配多大的內存空間?就無法更改大小了。所以你想不停的錄入就不行。
你空指針的原因是
明確一點,引用類型的數組存的是引用:
比如 Goods[] array = new Goods[100];----------這句話并不是生成了100個goods對象,而是生產了100個Goods的引用,只是名字是這樣的,第一個引用叫array[0],array[1]....aryyay[99],這樣來訪問的。
PS:你定義了一個數組,那么它就不再是Goods類了,而是Goods[]類。將數組理解成一個新的類。只是它的屬性是Goods類型,所以你才能對數組這樣引用而你給它的對象卻是Goods,那么當然無法引用上去,你只能參考一個匹配的類型,比如給個數組讓他引用才行。

不知道你學到集合沒有,集合就是封裝后的數組,實現了動態增加減少的效果,當然里面所謂動態本質也就是換上一個新數組,然后把變動后的數組給它,丟棄以前的。如果沒學到集合,那么你現在能實現的就是給數組定一個固定的長度,然后每次循環的時候新建一個對象給它。具體來說實現大概就是這個意思:

Goods[] wares = new Goods[100];---------定義了100個goods類的引用
for(int i = 0;i < wares.length;i ++){---------------這樣寫的好處在于,數組內容增長,不會替換前面的,而且有了長度確定不會出現數組下標越界而報錯
   會用構造函數,你可以用變量單獨定義再填入數據,這樣可以要求輸入。這里我就假設你的Goods類只有一個字符串類型的name
    System.ou.println('請輸入商品的名字:')
   String name = 輸入(就Scanner的那個);

     wares[i] = new Goods(name);
   是否再次輸入提示,要繼續就不做操作,不繼續輸入的內容就break跳出循環
}


來源:itnose

上一篇: Java數據類型(2)自動封裝拆箱

下一篇: 計算機程序的思維邏輯 (90) - 正則表達式 (下 - 剖析常見表達式)

分享到: 更多
打鱼输的倾家荡产 佩里西奇 极速时时采彩计划软件 有优惠活动的彩票平台 快3必中计划软件购买 11选五守号技巧稳赚 时时彩后三包胆公式 通比牛牛新手攻略 北京pk10是正规彩票吗 谁有龙虎群拉我 时时彩官方开奖视频下载 广东时时走势图 双色球走势图带坐标 一分快3计划软件免费下载 大乐透一共多少个球 11选5利用和值投注技巧