if문이 너무 많은데 이걸 줄일 수 있을까요?


발생하는 문제 및 실행환경

밑에 코드가 제가 원하는대로 되는데요. 코드가 너무 더러워요. 제가 줄이려고 몇번 다르게 코드를 짜봤는데 별로 큰 차이는 없어요. 코드를 줄이는데 도움이 될만한 수학적인 공식이 있을까요? 아니면 if문 16개가 충분히 나올만한 건가요?

코드를 설명하자면, 턴 방식의 게임인데요. 두명의 플레이어가 각각 4개의 액션 버튼을 가졌는데 그 값은 0~3이에요. result의 값이 0이면 아무도 못이긴거고 1이면 1P가 이긴거고 2면 2P가 이긴거 3이면 둘다 이긴거에요.

에러메시지(있는 경우)

소스코드

public int fightMath(int one, int two) {

    if(one == 0 && two == 0) { result = 0; }
    else if(one == 0 && two == 1) { result = 0; }
    else if(one == 0 && two == 2) { result = 1; }
    else if(one == 0 && two == 3) { result = 2; }
    else if(one == 1 && two == 0) { result = 0; }
    else if(one == 1 && two == 1) { result = 0; }
    else if(one == 1 && two == 2) { result = 2; }
    else if(one == 1 && two == 3) { result = 1; }
    else if(one == 2 && two == 0) { result = 2; }
    else if(one == 2 && two == 1) { result = 1; }
    else if(one == 2 && two == 2) { result = 3; }
    else if(one == 2 && two == 3) { result = 3; }
    else if(one == 3 && two == 0) { result = 1; }
    else if(one == 3 && two == 1) { result = 2; }
    else if(one == 3 && two == 2) { result = 3; }
    else if(one == 3 && two == 3) { result = 3; }

    return result;
}
  • 2016년 01월 15일에 작성됨

조회수 380


1 답변


좋아요
0
싫어요
채택취소하기

공식은 잘모르겠지만, 이런식으로 테이블을 만들어 결과값을 넣어줄수있습니다.

final int[][] result = new int[][] {
  { 0, 0, 1, 2 },
  { 0, 0, 2, 1 },
  { 2, 1, 3, 3 },
  { 1, 2, 3, 3 }
};
return result[one][two];
  • 2016년 01월 15일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close