【问题标题】:Find the first empty slot in Array list using for loop使用 for 循环查找 Array 列表中的第一个空槽
【发布时间】:2017-07-22 14:53:13
【问题描述】:

我正在尝试为我的游戏制作清单,但有两个问题我不知道如何解决。一个问题是插槽似乎在同一个位置,我想要一个 25 像素的空间,另一个问题是游戏一次只显示一个插槽而不是全部。
请记住,我不是一个好的程序员。

这是我的代码:

public void loadInventory(Graphics g){
    if(item != null){
        for (int i = 0; i < slot.length; i++){
            if (slot[i] == null) {
                slot[i] = "";
                break;
            }
        }
    for (int i = 0; i < slot.length; i++){
            if (slot[i] != null){               
                g.drawString(item.getName() + ": " + itemGroup.size(), 400, 100 + (i * 25));
                break;
            }
        }
    }
}

【问题讨论】:

    标签: java for-loop graphics inventory


    【解决方案1】:

    这里的item没有提供给方法,而是一个字段:

    public void loadInventory(Graphics g){
        if(item != null){
    

    因此,您在每次调用方法 loadInventory() 时都会覆盖该项目。
    更改方法以接受数组或更好的 Item 列表:

    public void loadInventory(Graphics g, List<Item> items){
    

    并使用此列表来绘制它们:

    for (int i = 0; i < slot.length; i++){
            if (slot[i] != null && items.get(i) != null){               
                g.drawString(items.get(i).getName() + ": " + itemGroup.size(), 400, 100 + (i * 25));      
            }
        }
    }
    

    并删除终止循环的break

    【讨论】:

    • 如果我删除了所有的中断,那么所有的插槽都会被相同的项目填充。如果我拿起另一个物品,那么所有的插槽都会被那个物品填满。
    • 现在我在向列表中添加项目的行出现错误。
    • 如果我发布整个 Inventory Class 会有帮助吗?
    【解决方案2】:

    删除 break 语句 - 它们会停止所有代码的执行,并且不会让其余的逻辑继续执行。

    你也不需要额外的 for 语句。

    public void loadInventory(Graphics g){
        for (int i = 0; i < slot.length; i++){
            if(item != null){
                if (slot[i] == null) {
                    slot[i] = "";
                }
             }  if (slot[i] != null){               
                    g.drawString(item.getName() + ": " + itemGroup.size(), 400, 100 + (i * 25));
                }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多