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
}
}
}
}