2012-09-13 118 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

莫非