Java 比较具有两个属性的项数组
我遇到了一个用Java解决问题的问题。问题是这样的:Java 比较具有两个属性的项数组,java,logic,Java,Logic,我遇到了一个用Java解决问题的问题。问题是这样的: for(Bottle bot : bottles){ if(bot.noHoles()) //i assume noHoles is bollean type System.out.println(bot); } 约翰被要求设计一个挑选瓶子的程序。程序必须从4个瓶子中做出决定:瓶子A、B、C、D。其中一些瓶子可能有洞。因此,该计划必须防止挑选有洞的瓶子和最大的瓶子,以便携带尽可能多的水 Bottle A -
for(Bottle bot : bottles){
if(bot.noHoles()) //i assume noHoles is bollean type
System.out.println(bot);
}
约翰被要求设计一个挑选瓶子的程序。程序必须从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);
<代码>瓶子[]瓶子={a,b,c,d};
所选瓶子=a;
对于(int i=0;i首先,由于您选择的是单个对象,所以您只需要一个循环。其次,由于将其中一个属性(即,
noHoles()
)与一个固定值(即,它必须是true
)进行比较,因此唯一需要比较的是容量
因此,算法如下所示:
for(Bottle bot : bottles){
if(bot.noHoles()) //i assume noHoles is bollean type
System.out.println(bot);
}
- 将最佳瓶子设置为
null
- 做一个单圈,一个接一个地穿过瓶子
- 检查当前瓶子是否没有孔;如果没有,则继续循环
- 检查最佳瓶子是否为
。如果是,请将null
设置为best
current
- 否则,比较
和当前
的容量,并将最佳
设置为容量较大的瓶子最佳
瓶
是否有孔,您不需要对循环使用嵌套的。我建议使用增强型for循环。类似以下内容:
for(Bottle bot : bottles){
if(bot.noHoles()) //i assume noHoles is bollean type
System.out.println(bot);
}
尝试一下:
<代码>瓶子[]瓶子={a,b,c,d};
选择的瓶子=瓶子[0];
for(int i=1;我选择了.capacity)
选择=瓶[i];
}
System.out.println(selected.id)
什么是瓶子选择=a;
和选择。id
?要计算出你的代码,它应该是选择=null;
你只想选择一个瓶子吗?如果是,你只需要一个循环,而不是嵌套循环。为什么你用嵌套的进行循环?这个问题要求你比较容量吗?如果a是瓶子的一个实例类,然后如果(瓶。无孔())应该足够了。如果您在循环中,则需要连续地获取瓶,这不是您的问题陈述