1

大家好,所以当我尝试访问代码时会发生以下情况,第一部分很好,因为没有库存中的手提包我希望它说你正在携带但是如果我有手提包我希望它说你正在携带这些物品在您的手提包中,但会发生以下情况;

现在怎么办?拿到手电筒好

现在怎么办?您携带的清单:手电筒

现在怎么办?走楼梯 这里很黑!

现在怎么办?拿到手提包好

What now? 
list
You are carrying these items in your handbag:
torch
You are carrying these items in your handbag:
wallet
You are carrying these items in your handbag:
keys
You are carrying these items in your handbag:
ring
You are carrying these items in your handbag:
USB
You are carrying these items in your handbag:
mobile
You are carrying these items in your handbag:
handbag

这是代码

public void listWhatYouHave()
{
    for (int i = 0; i < 7; i++)
    {
        if (hasItem[6])
        {
           System.out.println("You are carrying these items in your handbag:");
           switch (i)
           {
                case 0: 
                    System.out.println("torch");
                    break;
                case 1:
                    System.out.println("wallet");
                    break;
                case 2:
                    System.out.println("keys");
                    break;
                case 3:
                    System.out.println("ring");
                    break;
                case 4:
                    System.out.println("USB");
                    break;
                case 5:
                    System.out.println("mobile");
                    break;
                case 6:
                    System.out.println("handbag");
                    break;
                default: 
                    System.out.println("invalid item!");
                    break;
           }
        }
        else if (hasItem[i])
        {
            System.out.println("You are carrying:");
            switch (i)
            {
                case 0: 
                    System.out.println("torch");
                    break;
                case 1:
                    System.out.println("wallet");
                    break;
                case 2:
                    System.out.println("keys");
                    break;
                case 3:
                    System.out.println("ring");
                    break;
                case 4:
                    System.out.println("USB");
                    break;
                case 5:
                    System.out.println("mobile");
                    break;
                case 6:
                    System.out.println("handbag");
                    break;
                default: 
                    System.out.println("invalid item!");
                    break;
            }
        }
    }

你能帮忙...谢谢(这显然是java)

抱歉,模糊不清...几乎当我没有手提包时,我希望它通过说“您正在携带”来列出我携带的物品,但是如果我在拿起手提包的时候拿起手提包...我希望它说“你的手提包里有这些物品”,但目前它打印出你只携带一次......但是你在手提包里携带这些物品被印在每一行......我只想要一次。

4

2 回答 2

2

你的hasItem[6]价值是真实的,那么if (hasItem[6])条件将永远是真实的。你的 else 部分不会被执行

可能是你需要if(hasItem[i])而不是if(hasItem[6])

于 2013-10-19T09:05:32.510 回答
0

我认为问题在于,在您的条件的第一部分中,您只检查用户是否有手提包,而您没有检查该项目。第一个条件应该重写:

if(hasItem[6] && hasItem[i])
{
 ....

同时我会重构出内部开关,因为它在代码中出现了两次。我建议使用枚举类型而不是整数常量。

编辑:

为了防止它多次打印“您正在携带”行,您应该将其从 for 循环中重构出来。

我会这样做:

public void listWhatYouHave()
{
    if (hasItem[6])
    {
        System.out.println("You are carrying these items in your handbag:");
    }
    else
    {
        System.out.println("You are carrying these items:");
    } 

    listItems(hasItem);
}

void listItems(bool[] hasItem)
{
    for (int i = 0; i < 7; i++)
    {
          if(hasItem[i])
          {
              switch(hasItem[i])
              {
                  // ... put your case here
              }
          }
    }
}

此外,如果您不想写出手提包中携带的手提包,则可以将其从开关盒中取出,因为它是您用于不同目的的东西。

于 2013-10-19T09:16:04.697 回答