我遇到了一个问题,即我在Java中解决问题。问题是这样的:
约翰被要求设计一个挑选瓶子的程序。该程序必须由4瓶决定:瓶A,B,C,D。某些瓶子可能有孔。因此,该程序必须防止采摘有孔的瓶子和最大的瓶子,以便携带尽可能多的水。
Bottle A - has holes and can hold 5 litres of water
Bottle B - no holes and can hold 2 litres of water
Bottle C - no holes and can hold 3 litres of water
Bottle D - no holes and can hold 1 litre of water`
我尝试使用嵌套for循环在Java中编程。但是,它没有给我正确的答案。
Bottle[] bottles = {a, b, c, d};
Bottle chosen = a;
for(int i=0; i<bottles.length; i++)
{
for(int j=i+1; j<bottles.length; j++)
{
if(bottles[i].capacity < bottles[j].capacity && bottles[j].noHoles())
{
chosen = bottles[j];
}
}
}
System.out.println(chosen.id);
答案 0 :(得分:1)
首先,既然您选择了一件事,那么您只需要一个循环。其次,由于其中一个属性(即noHoles()
)与固定值进行比较(即它必须是true
),因此唯一需要进行比较的是容量。
因此,算法如下所示:
null
null
。如果是,请将best
设置为current
current
和best
的容量,并将best
设置为容量更大的瓶子。答案 1 :(得分:0)
你的问题有点令人困惑所以我不确定我是否回答了你的问题。但是,如果您只需要检查Bottle
是否有漏洞,则不需要使用嵌套的for
循环。我建议使用增强型for循环。像这样的东西:
for(Bottle bot : bottles){
if(bot.noHoles()) //i assume noHoles is bollean type
System.out.println(bot);
}
答案 2 :(得分:0)
尝试为:
Bottle[] bottles = {a, b, c, d};
Bottle chosen = bottles[0];
for(int i=1; i<bottles.length; i++)
{
if(bottles[i].noHoles() && bottles[i].capacity > chosen.capacity)
chosen = bottles[i];
}
System.out.println(chosen.id);