布尔表达式(x / 2)* 2 == x来测试

时间:2014-05-31 23:33:18

标签: java boolean

这实际上是我的实验室问题之一。

您可以使用布尔表达式(x / 2)* 2 == x来测试整数x是偶数还是奇数。甚至使此表达式为true的整数,奇数整数使表达式为false。使用for循环迭代五次。每次迭代时,请求用户输入一个整数。打印用户键入的每个整数,以及它是偶数还是奇数。跟上偶数 用户输入的奇数和奇数,并在完成时打印“完成”,因此用户不会尝试键入另一个整数。最后,打印出输入的偶数和奇数的整数。

我基本上知道这个问题需要我做什么。但是,我不太明白为什么布尔表达式(x / 2)* 2 == x,可以测试整数是偶数还是奇数。让我说我的数字是59,这显然是一个奇数。 59除以2是29.5。 29.5乘2,等于59.无论x是什么,(x / 2)* 2总是等于x。那么当整数是奇数时,如何使这个表达式成为假。然后我可以确定我应该打印什么。

2 个答案:

答案 0 :(得分:2)

因为你正在处理整数,所以总是向下舍入到最接近的整数。

59/2 = 29当所有元素都是整数时。

将结果乘以2会得到58,所以由于2个数字不相同,我们推断数字59是奇数。

答案 1 :(得分:0)

这应该是您以初学者的方式编写的代码,如果您仍然不理解某些问题。使用公式x ==(x / 2)* 2,因为当你划分两个整数变量时,结果总是一个整数,后来如果它是奇数,则不会给你相同的初始值数。 (59/2 = 29 => 29 * 2 = 58 =>假)...

import java.util.*;

public class EvenOrOdd{

   public static void main( String [] args){

   Scanner scan=new Scanner(System.in);

   boolean result=true;

List<Integer> EvenNums = new ArrayList<Integer>(); 
List<Integer> OddNums = new ArrayList<Integer>(); 

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

   System.out.println("Enter a number: ");

   int x=scan.nextInt();

   if(x==(x/2)*2){  
       result=true;
       System.out.println(result); 
       EvenNums.add(x);  
       continue;

    }else if(x!=(x/2)*2){  
       result=false; 
       System.out.println(result);
       OddNums.add(x); 
       continue;

      }
  }
 System.out.println("Done");   

 System.out.println("Even numbers are: " + EvenNums);
 System.out.println("Odd numbers are: " + OddNums);

 }
}