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 -

我遇到了一个用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 - 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是瓶子的一个实例类,然后如果(瓶。无孔())应该足够了。如果您在循环中,则需要连续地获取瓶,这不是您的问题陈述