首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何重新创建下表?

如何重新创建下表?
EN

Stack Overflow用户
提问于 2018-10-11 16:38:20
回答 1查看 60关注 0票数 0

大家好,我正试图重新创建上面的表,以便进行作业,但是由于与&&函数有关的错误,我陷入了困境。请注意,我们不允许使用数组,并且仅限于“开关”和“如果”。

到目前为止,这就是我所得到的:

代码语言:javascript
复制
if ((BEAK_MM == 1) && (CLAW_MM == 0) && (COLOR = "Grey")) {
   System.out.println ("The type of bird is A.");}
else if ((BEAK_MM == 2) && (CLAW_MM == 1) && (COLOR = "Grey")) 
   System.out.println ("The type of bird is A.");}
else if ((BEAK_MM == 3) && (CLAW_MM == 2) && (COLOR = "Grey")) 
   System.out.println ("The type of bird is A.");}
else if ((BEAK_MM == 4) && (CLAW_MM == 3) && (COLOR = "Grey")) 
   System.out.println ("The type of bird is A.");}
else if ((BEAK_MM <= 4.5) && (CLAW_MM == 4) && (COLOR = "Grey")) 
   System.out.println ("The type of bird is A.");}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-11 16:54:07

假设BEAKCLAW是整数,COLORString,那么表的排列可以更像:

代码语言:javascript
复制
// must be grey
if ("Grey".equals(COLOR)) {
  if ((BEAK_MM == 1 && CLAW_MM == 0)
      || (BEAK_MM == 2 && CLAW_MM == 1)
      || (BEAK_MM == 3 && CLAW_MM AW == 2)
      || (BEAK_MM == 4 && CLAW_MM == 3)
      || ( (BEAK_MM == 4 || BEAK_MM == 5) && CLAW_MM == 4))) {
     System.out.println("The bird is the word");
  }
}

这里的逻辑是,根据表,A型鸟必须是灰色的。然后,有一些特定的检查喙和爪类型,但如果它不是灰色,它不是A型鸟。此外,没有必要使用OP的所有堆叠的“else”语句。

有许多其他方法来解决问题空间,但我要考虑的是没有数组的限制,因此可能没有其他有用的数据结构,比如ListSet

正如@Nicholas所指出的,String对象必须与.equals()进行比较。

我也会把这些东西移到isBirdTypeA(int beak, int claw, String color) { ... }方法中

代码语言:javascript
复制
@Test
public void testBirds()
{
    final String G = "Grey";
    final String P = "Pink";

    assertTrue(isBirdTypeA(1, 0, G));
    assertFalse(isBirdTypeA(1, 0, P));
    assertTrue(isBirdTypeA(2, 1, G));
    assertTrue(isBirdTypeA(3, 2, G));
    assertTrue(isBirdTypeA(4, 3, G));
    assertTrue(isBirdTypeA(4, 4, G));
    assertTrue(isBirdTypeA(5, 4, G));
    assertFalse(isBirdTypeA(4, 5, G));
    assertFalse(isBirdTypeA(4, 0, G));
    assertFalse(isBirdTypeA(1, 1, G));

}


private static boolean isBirdTypeA(int beak, int claw, String color)
{
    if ("Grey".equals(color)) {
        if ((beak == 1 && claw == 0)
            || (beak == 2 && claw == 1)
            || (beak == 3 && claw == 2)
            || (beak == 4 && claw == 3)
            || ( (beak == 4 || beak == 5) && claw == 4)) {
                return true;
            }
    }
    return false; 
}


public static void main(String[] args) {
  int BEAK_MM = Integer.parseInt(args[0]);
  int CLAW_MM = Integer.parseInt(args[1]);
  String COLOR = args[2];

  if (isBirdTypeA(BEAK_MM, CLAW_MM, COLOR)) {
    System.out.println("The type of bird is A");
  }
}

$ java BirdBeak 1 0格雷 这种鸟是A型的

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52765052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档