문제

나는 6 또는 7으로 나눌 수있는 1에서 100 사이의 정수를 표시하는 프로그램을 작성하려고합니다. 그러나 둘 다 아닙니다.

내 코드는 다음과 같습니다.

import acm.program.*;

public class Problem4 extends ConsoleProgram
{
    public void run()
    {
        for (int i = 1; i <= 100; i++)
        {
            boolean num = ((i % 6 == 0) || (i % 7 == 0));

            if (num == true)
            println(i + " is divisible");
        }
    }
}

위의 코드는 다음 답변을 보여줍니다 : 6,7,12,14,18,21,24,28,30,35,36,42,48,49,54,56,60,63,66,70,72,77,78,84,90,91,96,98

이제 대담한 숫자 42와 84는 모두 6과 7에 의해 다이버입니다. 이제 내가 변경하면 || 에게 && 위 코드에서 결과는 42와 84만을 보여줍니다.

최종 결과 에서이 두 숫자를 제거하려면 어떤 변경을해야합니까?

도움이 되었습니까?

해결책

당신은 당신의 상태를 모양으로 만들어야합니다.

boolean num = (i % 6 == 0 || i % 7 == 0) && !(i % 6 == 0 && i % 7 == 0);

그것은 기본적으로 변환되고 있습니다 "그러나 둘 다 아닙니다"자바 코드로 :)

다른 팁

Xor는 갈 길입니다.

import acm.program.*;

public class Problem4 extends ConsoleProgram {
  public void run() {
    for (int i = 1; i <= 100; i++) {
      if ( (i % 6 == 0) ^ (i % 7 == 0) ) {
        println(i + " is divisible");
      }
    }
  }
}

"둘 다"에 대한 추가 점검이 필요합니다. 나는 그것이해야한다고 생각한다 :

부울 num = ((i % 6 == 0) || (i % 7 == 0)) && (i % 42! = 0);

당신은 또한 시도 할 수 있습니다

boolean num = ((i % 6 == 0) != (i % 7 == 0));

6과 7에 의해 나눌 수 있다는 것이 무엇을 의미하는지 생각해보십시오 ... 우주와 모든 생명에 대한 대답.

import acm.program.*;

public class Problem4 extends ConsoleProgram
{
    public void run()
    {
        for (int i = 1; i <= 100; i++)
        {
            boolean num = ((i % 6 == 0) || (i % 7 == 0));
            boolean both = ((i % 6 == 0) && (i % 7 == 0));

            if ((num == true) &&  (both == false))
            println(i + " is divisible");
        }
    }
}

다음은 C ++에서 잘 작동하지만 부울로 바뀌는 스 니펫입니다.

int value;
if ((value % 6 == 0 && value % 7 != 0) || (value % 6 != 0 && value % 7 == 0))
    cout << "Is " << value << " divisible by 6 or 7, but not both? true" << endl;
  else
    cout << "Is " << value << " divisible by 6 or 7, but not both? false" << endl;

약간 단순화 된 버전

for(int i=1; i<=100; i++) {

            // Either Divisible by 6 or 7 but not both


            if((i%6==0 && i%7!=0) ||( i%7==0 && i%6!=0)) {


                println(i);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top