Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在for循环中,if语句不能产生我想要的结果_Java_If Statement_For Loop_Switch Statement - Fatal编程技术网

Java 在for循环中,if语句不能产生我想要的结果

Java 在for循环中,if语句不能产生我想要的结果,java,if-statement,for-loop,switch-statement,Java,If Statement,For Loop,Switch Statement,大家好,当我尝试访问代码时发生了以下情况,第一部分很好,因为没有库存中的手提包,我希望它说你正在携带,但是如果我有手提包,我希望它说你正在手提包中携带这些物品,但以下情况会发生 现在怎么办? 获取火炬 嗯 现在怎么办? 列表 您携带: 火炬 现在怎么办? 走楼梯 这里很黑 现在怎么办? 拿手提包 嗯 这是代码 public void listWhatYouHave() { for (int i = 0; i < 7; i++) { if (hasItem[6

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

现在怎么办? 获取火炬 嗯

现在怎么办? 列表 您携带: 火炬

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

现在怎么办? 拿手提包 嗯

这是代码

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;
            }
        }
    }
public void list whatyouhave()
{
对于(int i=0;i<7;i++)
{
如果(第[6]项)
{
System.out.println(“您正在手提包中携带这些物品:”;
开关(一)
{
案例0:
系统输出打印项次(“火炬”);
打破
案例1:
System.out.println(“钱包”);
打破
案例2:
System.out.println(“键”);
打破
案例3:
系统输出打印项次(“环”);
打破
案例4:
System.out.println(“USB”);
打破
案例5:
System.out.println(“移动”);
打破
案例6:
System.out.println(“手提包”);
打破
违约:
System.out.println(“无效项!”);
打破
}
}
else if(hasItem[i])
{
System.out.println(“您携带:”);
开关(一)
{
案例0:
系统输出打印项次(“火炬”);
打破
案例1:
System.out.println(“钱包”);
打破
案例2:
System.out.println(“键”);
打破
案例3:
系统输出打印项次(“环”);
打破
案例4:
System.out.println(“USB”);
打破
案例5:
System.out.println(“移动”);
打破
案例6:
System.out.println(“手提包”);
打破
违约:
System.out.println(“无效项!”);
打破
}
}
}
你能帮忙吗…谢谢(这显然是java)


抱歉,benig vague…当我没有手提包时,我想让它列出我随身携带的物品,说“你随身携带”,但是如果我在提包时捡起手提包…我想让它说“你在手提包中携带这些物品”,但现在它打印出你只携带了一次…但是你正在携带这些物品您的手提包中的物品是用everyline打印的…我只想要一次。

您的
hasItem[6]
值为true,则
如果(hasItem[6])
条件始终为true。 你的其他部分不会被执行


可能您需要
if(hasItem[i])
而不是
if(hasItem[6])
我认为问题在于,在您的条件的第一部分,您只检查用户是否有hadbag,而不检查该项。第一个条件应该重写:

if(hasItem[6] && hasItem[i])
{
 ....
同时,我会重构内部开关,因为它在代码中有两次,我建议使用枚举类型而不是整数常量

编辑:

为了防止它多次打印“youareholding”行,您应该从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
              }
          }
    }
}
public void list whatyouhave()
{
如果(第[6]项)
{
System.out.println(“您正在手提包中携带这些物品:”;
}
其他的
{
System.out.println(“您正在携带这些物品:”);
} 
列表项目(hasItem);
}
作废列表项(bool[]hasItem)
{
对于(int i=0;i<7;i++)
{
如果(第[i]项)
{
开关(项目[i])
{
//…把你的案子放在这里
}
}
}
}

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

不太清楚您想要什么,但我假设
if(hasItem[6])
应该是
if(hasItem[I])
@Andrew:你能试着改进一下你的问题吗?抱歉,伙计们,我编辑了这个问题,最后添加了我想要的内容…我只希望它只打印一次“你在手提包里带着这些东西”,而不是每行。如果我有(hasItem[6])这还不够,因为他只想写出用户拥有的物品。else部分在用户没有手提包时执行,if部分在用户有手提包时执行,但它不检查用户是否也有物品。这与Daniel的评论非常吻合……我希望if语句列出用户拥有的物品……而不是ev他们“能”做的每件事有。@Andrew:我也给你写了一个答案,你也有时间试一下吗?:)@Daniel:是的,你的半代码有效…它阻止了所有项目的打印…但是现在它只是说你在手提包里带着…项目…并且说如果你有两个项目…它会打印两次…所以仍然需要阻止它打印多个项目请注意。@Andrew:我修改了我的答案,以满足您的需要。我不知道我是否做错了什么…不确定listItems(hasItem)是什么;但是这样做并编译它,它只会向我返回一个所有项目的列表…@Andrew:是的,很抱歉,我忘了复制开关周围的条件,我只是修改了代码。我的错误,复制粘贴错误。
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
              }
          }
    }
}