2012-03-30 114 views
1

我有一个数组来保存来自数据库的值。如果我尝试使用某些默认数据,它可以正常工作,但是如果我从数据库获取值,则它只显示最后一个值。Java -for循环仅重复上一个值

默认数据;从DB

MenuList menu_data [] = new MenuList[]{}; 
menu_data = new MenuList[] 
{ 
new MenuList("test","test1") ,  
new MenuList("test","test1") , 
new MenuList("test","test1") , 
new MenuList("test","test1") , 
new MenuList("test","test1") , 
new MenuList("test","test1") , 
new MenuList("test","test1") , 
new MenuList("test","test1") , 
new MenuList("test","test1") , 
new MenuList("test","test1") , 
new MenuList("test","test1") 
}; 

价值,

MenuList menu_data [] = new MenuList[]{}; 
List<Menu> profiles = db.getAllContacts(); 
for (Menu cn : profiles) { 
menu_data = new MenuList[] 
{ 
new MenuList(cn.getmenuname(), cn.getmenuprice()) 
}; 
} 

我如何从数据库中的所有值。

+0

你试过'menu_data = profiles.toArray()'? – 2012-03-30 03:28:17

+0

在我的个人资料中我有几个值,如菜单,价格,蔬菜,时间,日期......我只是想显示菜单和价格.... – 2012-03-30 03:30:48

回答

2

试试这个:

List<MenuList> menulists = new ArrayList<MenuList>(); 
for (Menu cn : db.getAllContacts()) 
    menulists.add(new MenuList(cn.getmenuname(), cn.getmenuprice())); 
MenuList[] menu_data = menulists.toArray(new MenuList[0]); 
3

每次你经历循环,你正在创建一个新的数组。因此,只有最后一个值是可用的。请尝试以下

menu_data = new MenuList[profiles.size()]; 

for (int i = 0; i < menu_data.length; i++) { 
    Menu cn = profiles.get(i); 
    menu_data[i] = new MenuList(cn.getmenuname(), cn.getmenuprice()); 
} 
+4

你需要声明和初始化'i'变量:'int i = 0 ';并在循环中:'menu_data [i ++] = ...' – 2012-03-30 03:30:12

+0

@LuiggiMendoza完全错过了!谢谢 – 2012-03-30 03:31:56

+0

它抛出java.lang.ArrayIndexOutOfBoundsException:length = 0; index = 0 – 2012-03-30 03:35:05

2
List<Menu> profiles = db.getAllContacts(); 
int numProfiles = profiles.size(); 
MenuList[] menu_data = new MenuList[numProfiles]; 
for (int i = 0; i < numProfiles; i++) { 
    Menu cn = profiles.get(i); 
    menu_data[i] = new MenuList(cn.getmenuname(), cn.getmenuprice()); 
} 
+0

它抛出2个错误..第一。当提供数组初始值设定项时,不能定义维度表达式。 index = 0 – 2012-03-30 03:39:02

+0

对不起,我只是想创建它而不是使用初始化器。固定。如果length = 0,那么'for'循环体不会被执行。 – 2012-03-30 04:44:34