Как я могу воссоздать следующую таблицу? - PullRequest
0 голосов
/ 11 октября 2018

enter image description here

Привет всем, я пытаюсь воссоздать таблицу выше для назначения и застрял из-за ошибок, связанных с функцией &&.Обратите внимание, что мы не можем использовать массивы и ограничены «switch» и «If»

Это то, что я получил до сих пор:

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.");}

1 Ответ

0 голосов
/ 11 октября 2018

Если предположить, что BEAK и CLAW являются целыми числами, а COLOR является String, то таблица может быть упорядочена следующим образом:

// 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");
  }
}

Логика заключается в том, что согласностол, птица типа А должна быть серой.Затем существуют некоторые конкретные проверки типов клюва и когтей, но если это не серый, то это не птица типа А.Также нет необходимости во всех сложенных операторах «иначе, если».

Существует много других подходов к решению проблемного пространства, но я иду с ограничениями на отсутствие массивов и, следовательно, предположительно, никаких других полезных структур данных, таких как List или Set.

Как отметил @Nicholas K, String объекты должны сравниваться с .equals().

Я бы также переместил этот материал в метод isBirdTypeA(int beak, int claw, String color) { ... }

@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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...