2017-12-04 6 views
0

첫 번째 질문은 주어진 음수가 3 또는 5의 배수이지만 둘 다 아닌 경우 true를 반환하라는 질문을받는 곳에서 연습을 시도하고 있습니다. 예는 다음과 같습니다.간단한 프로그래밍 연습 (modulus op 사용)

old35 (3) 진정한 →

→ 진정한

old35 (15) →

old35 (10)가 false를

그래서 3은 3의 배수의로, 사실,하지만 난 것이다 현재 모든 인스턴스에 대해 내 코드를 작동시킬 수 없습니다. 아래 코드;

public boolean old35(int n) { 
    if ((35 % n == 3) || (35 % n == 5)) 
     return true; 
    return false; 
} 

어떻게 연습 할 말해 무엇의 기준에 맞게이를 편집 할 수 있을까? >

답변

0

자세한 설명을 보내 드리겠습니다. 먼저 나머지 기호를 사용하여 나머지가 0 인 조건을 확인합니다.

n % 3 == 0 

과 조건에 대해 하나의 번역에 하나 그런

n % 5 == 0 

로 함께 넣어 : 함께

((n % 3 == 0) || (n % 5 == 0)) // Multiple of 3 or 5 

!((n % 3 == 0) && (n % 5 == 0)) // But not both 

추가 (과)를;

public static boolean old35(int n) { 
    return(((n % 3 == 0) || (n % 5 == 0)) && !((n % 3 == 0) && (n % 5 == 0))); 
} 

그러나 단순히 당신이하고있는 것은 XOR (^) 작업은, 다음과 같은 코드가 유효하고 간단하다

public static boolean old35(int n) { 
    return((n % 3 == 0)^(n % 5 == 0)); 
} 
0

조건의 논리 XOR을 사용할 수 있습니다. 기본적으로 C1^C2을 할 수 있습니다. 편집 : 3의 배수를 확인하려면 n % 3 == 0을 5의 배수로 동일하게 선택해야합니다.

+0

나는 XOR 연산자를 사용하는 나쁜 관행입니다 들었습니다, 코드를 멋지게 유지하면서 다른 방법이 있을까요? – Tyler

+0

숫자가 3으로 나눌 수 있는지, 5로 나누지 않거나 3로 나누지 않고 5로 나눌 수 있는지 확인할 수 있습니다. –