我在lotto中有一个列表,我在其中插入对象lottoTicket。如下所示
if(choice.equals("P"))
{
int i = 1;
System.out.println("Choose a number between 1 and 90:");
List<Integer> list = new ArrayList<>();
list.add(s.nextInt());
LottoTicket lt = new LottoTicket("Prima",money * 60,list, i++);
Lotto l = new Lotto();
l.li.add(lt);
}
我遇到的问题是在乐透中我有li.size(),它总是打印0(因此总是返回0),即使我已经创建了3个对象并将它们分配给列表。以下代码位于乐透类中。
List<LottoTicket> li = new ArrayList();
@Override
public void draw(){
Random rand = new Random();
int[] array = new int[6];
for (int i = 1; i < array.length ; i++) {
array[i] = rand.nextInt(91) + 1;
System.out.println("Tickets sold: " + li.size());
System.out.print(""+ array[i] + ",");
}
}
答案 0 :(得分:0)
从上面的代码段开始,我不清楚您将数组array
的内容添加到li
的位置。 draw函数中的for循环仅为array
赋值,但从不向列表添加任何内容。值得注意的是,由于您将i = 1
初始化为1,因此您只生成存储在array
位置1到5中的5个随机数,而array
位置0永远不会被访问
答案 1 :(得分:0)
如果没有更多代码,几乎不可能猜到&#39;你的问题可能是什么,但作为一个黑暗的刺,我会假设你的Lotto
对象不是全局的。
LottoTicket lt = new LottoTicket("Prima",money * 60,list, i++);
Lotto l = new Lotto();
l.li.add(lt);
在这里,我觉得你每次都在创建一个新的Lotto
对象。相反,为什么不将它定义为类全局,以便您可以保证只有一个对象。像这样:
// Top of the class(global scope)
private Lotto mLotto = new Lotto();
然后你可以在该课程的任何地方访问它,并知道你只是访问了1个对象。
顺便说一下,除非你别无选择(但通常总是有选择!),否则将成员暴露给外部类是非常糟糕的编码,在这种情况下,我会使用像以下内容:
class Lotto {
// define as private to avoid possible errors later on
private List<LottoTicket> mTickets = new ArrayList<LottoTicket>();
// define getter to return the list as a whole
public List<LottoTicket> getTickets() { return mTickets; }
// define an add Ticket method to add the data to the object, rather than
// access Lotto.li.add etc...
public void addTicketToList(LottoTicket thisTicket){
mTickets.add(thisTicket);
}
}
因此,在上面代码的场景中,您可以使用以下内容:
LottoTicket lt = new LottoTicket("Prima",money * 60,list, i++);
// Replace all this
// Lotto l = new Lotto();
// l.li.add(lt);
// with
myGlobalLottoObject.addTicketToList(lt);
// And then loop through the collected tickets with something like:
foreach(LottoTicket lt : myGlobalLottoObject.getTickets())
{
// Do something here with each "lt" object that is returned
}
您已走上正轨,但您错过了对类和代码结构的一些基本理解。希望这可以帮助您解决问题的根源。
显然,如果这对您没有帮助,那么您必须发布更相关的代码,以便我们能够准确查看您出错的地方。