2012-09-13 141 views
1

我一直在解決有關AP計算機科學邏輯測試的一些問題,但是我偶然遇到幾個問題。Java邏輯測試問題

下面是來自網站的說明:將以下每個英語語句翻譯成可用於if/else語句的邏輯測試。爲下面的每條語句編寫適當的邏輯測試。假定已經聲明瞭三個int變量,x,y和z。

這些是2個問題我有一個問題:

x或y是偶數,另一個爲奇數。

x和z的符號相反。

我一直在試圖找出這些答案了幾個小時,我仍然沒有線索。如果有人能指引我朝着正確的方向,我將不勝感激。我明白這是「家庭作業」,但一些明確的幫助將會非常有幫助。

+1

你發佈實際的問題? – Blender

+1

這是一個非常混亂的帖子。請澄清。 –

+0

我假設你必須編寫一個驗證這些語句的布爾測試嗎? – Borgleader

回答

2

您需要使用和(&&)和或(||)來創建邏輯公式。我不打算做你的,但這是另一個:

x比y和z都大,或者x小於y和z。

翻譯爲:

((x > y) && (x > z)) || ((x < y) && (x < z)) 

你只需要弄清楚的奇/偶公式(提示 - 在低位)和正/負(提示 - 比較0),結合那些和/或。

+0

我完全理解你的問題,但我的第一個問題的措辭有問題。是說x或者是偶數,y是奇數,或者x是奇數,y是偶數? – user1287412

+0

@ user1287412:這就是我對它的解釋。 –

1

對於第一個問題,如果x(或y)*爲奇數,Y(或X)必須均勻,並且反之亦然。檢查奇數值意味着x和2的模是1 - 從那裏,如果y(或x)模2是0(檢查是否平坦),則必須聲明。

對於第二個問題,則需要遵循的邏輯的鏈作爲這樣:

  • X是正(或大於0),這意味着Z應該在是負的(或小於0)。
  • Z是正數,這意味着X必須是負數。

*:這是一個排他性的或 - 我的意思是說,你要麼檢查x或y,但不能同時檢查兩個。

1

首先,您必須完全理解語句才能將其放入計算機的語言中。例如,

x和y具有相同的符號

什麼這真正的意思是:

X 大於或等於0 y 大於或等於0x小於0y是低於0

現在很容易把這個成Java:

(x >= 0 && y >= 0) || (x < 0 && y < 0) 

當然,你的問題可以通過類似的方法解決。

+0

謝謝!這對第二個問題有很大的幫助! – user1287412

+0

我很高興能夠幫助 - 導入的東西是理解它背後的過程。 – arshajii

+0

[0既不是正數也不是負數](http://en.wikipedia.org/wiki/0_(number)#As_a_number) – Makoto

0

把它寫成純英文,對我來說無論如何。

If ((x is even AND y is odd) OR (x is odd AND y is even)) 

對於其它

If ((x gt or eq 0 AND y lt 0) OR (y gt or eq 0 AND x lt 0)) 

假設0是正的。

+2

他的功課很棒。 –

+0

無論如何,他的第一個答案的任何變化都不起作用,Dave。 – user1287412

+0

@ user1287412,問題是詢問x或y是否爲偶,其他則必須是奇數。因此,第一個工作。編碼並測試它。 – km1

1

x或y是偶數,另一個是奇數。

奇數和偶數的和是奇數。兩個奇數的和爲偶數,兩個偶數的和爲偶數。

因此(x+y)%2!=0

x和z符號相反

這個人是相似的,你可以這樣做:

x*z<0 

由於0既不是消極或積極的和

  • 負* pos = neg
  • neg * neg = pos
  • POS * POS = POS

如果你要考慮0和符號相反的負數,您可以使用(x >= 0) == (z < 0)

2

對於第一個問題:x % 2 != y % 2 第二個問題:x * z < 0

莫非