2014-02-24 52 views
1

提示:您可以使用布尔表达式(x/2)* 2 == x来测试整数x是偶数还是奇数。整数甚至使这个表达式成立,奇数整数使表达式成为假。使用for循环迭代五次。在每次迭代中,从用户请求一个整数。打印用户类型的每个整数,以及它是偶数还是奇数。跟上用户键入的偶数和奇数的数量,并在完成时打印“完成”,以便用户不会尝试输入另一个整数。最后,输出输入的偶数和奇数的数量。Java中的布尔值

这里是我到目前为止的代码:

public static void main(String[] args) { 
    Scanner in = new Scanner(System.in); 
    System.out.println("Enter an integer."); 
    int x = in.nextInt(); 
    boolean even; 
    for (int i = 0; i == 5; i++) { 
     if ((x/2) * 2 == x) { 
      even = true; 
      System.out.println(x + " is even."); 
     } 
     if ((x/2) * 2 != x) { 
      even = false; 
      System.out.println(x + " is odd."); 
     } 
    } 
} 

不是寻找一个解决方案,只是一些帮助,以什么我需要做的。真的对整个布尔事物感到困惑。

+1

你面临什么问题?是否能够按预期打印偶数/奇数? – Kakarot

+1

指定时请注意类型的大小写。布尔值是具有true和false值的基本类型,而Boolean是包装布尔类型的包装类。布尔意图也包含true或false,但它是一个类而不是原始的。 – mikemil

回答

-1

一个更简单的找到奇偶值的方法是除以2号,并检查其余:

if(x % 2 == 0) // remainder is 0 when divided by 2 
{ 
//even num 
} 
else 
{ 
//odd num 
} 
1

那么,你的循环将不火;每当你到达循环时,i == 5总会是错误的。

你可能想改变你的循环语句是将是:

for (int i = 0; i <= 5; i++) { 
    // code 
} 

此外,利用方式的Java评估分支机构,可变even可能没有被初始化。你需要用一个值来实例化它。

boolean even = false; 

最后,告诉数字是否是偶数的最直接的方法是使用模运算符。如果它可以被二整除,那甚至是可以的。否则,这很奇怪。

if (x % 2 == 0) { 
    // even, do logic 
} else { 
    // odd, do logic 
} 

缺少从分配的要求 - 即,有能力保持奇数和偶数的个数的流水账,但我将它作为一个练习留给读者。

+0

表达式'(x/2)* 2 == x'不会总是评估为真。变量'x'是一个整数。而且,你“留下来作为练习”的部分是问题的全部。 –

+0

我真的很难在数学上看到如何不会总是减少到'x == x'。因为,当我手工完成这项工作时,以及当我将它投入几个CAS系统(包括Wolfram Alpha)时,就是这样。 – Makoto

+0

你为什么不尝试一下,亲自看看为什么只有偶数才是真的? –

0

您缺少的部分是记录遇到了多少偶数和奇数。你将需要两个独立的int变量,你将在主循环之前声明这个变量。

int numEvens = 0; 
int numOdds = 0; 

然后,在你的工作中输入的号码是奇数还是偶数,你会增加一个号码或其他分支机构。

最后,在程序结束时,您可以在消息中打印出来。

1

这似乎像你的功课。

好像你的'boolean even'甚至没有被使用,我建议你不要声明也不要使用它。使用x = x%2来获得数字,如果它是偶数或奇数更好。如果是连x应为0,如果是奇数,则x应为1%,相当于MOD

public static void main(String[] args) { 
Scanner in = new Scanner(System.in); 
int x; 
int even = 0; // keep tracks the number of even 
int odd = 0; // keep tracks the number of odd 
for (int i = 0; i < 5; i++) { 
    System.out.println("Enter an integer."); 
    x = in.nextInt(); 
    if (x % 2 == 0) { 
     even++; 
     System.out.println(x + " is even."); 
    } 
    if (x % 2 == 1) { 
     odd++; 
     System.out.println(x + " is odd."); 
    } 
} 
System.out.println("Done"); 
System.out.println("Evens: " + even "\nOdds: " + odd); 
} 

此代码应为您的家庭作业要求的答案。你的in.nextInt()应该在for循环中,因为你需要5次请求用户。不仅如此,你的循环应该是< 5,因为它会从0,1,2,3,4循环5次