2009-06-27 102 views
2

我正在嘗試編寫一個程序,顯示1和100之間的整數,可以被6或7整除但不能同時爲查找可以被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)); 

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

上面的代碼顯示如下回答: 6,7,12,14,18,21,24,28,30,35,36, ,48,49,54,56,60,63,66,70,72,77,78,,90,91,96,98

現在粗體數字42和84都是6除以6現在如果我在上面的代碼中將||更改爲&&,結果只顯示42和84.

我應該做些什麼來從最終結果中刪除這兩個數字?

+0

你應該改變`num == true`爲'num` – Woot4Moo 2011-02-26 03:36:33

回答

8

你必須讓你的病情是這樣的:

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

這基本上將 「但不能同時」 Java代碼:)

2

想一下,可以被6和7整除的意思是什麼?宇宙和生命的答案。

+1

「銀河系漫遊指南」) – Rorick 2009-06-27 19:36:32

+0

我同意:)。謝謝。 – akarnokd 2009-06-27 20:49:38

5

您需要額外檢查「但不是兩個」。我認爲它應該是:

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

+0

我已經在我的代碼 boolean num =((i%6 == 0)||(i%7 == 0)); – 2009-06-27 19:20:35

+0

輸入太快。請參閱編輯結果。你的問題不是Java,而是邏輯。 – duffymo 2009-06-27 19:21:15

+0

但是你的代碼更像是黑客而不是解決方案,因爲事先並不知道42和84。 – 2009-06-27 19:23:52

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

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

你也可以嘗試

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

這裏是一個片段,它應該工作良好在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; 
0

有點簡化版本

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);