在Java中不使用数学/位运算符查找偶数/奇数

时间:2011-12-24 06:26:27

标签: java

如何在不使用数学/按位运算符的情况下找到偶数/奇数?

6 个答案:

答案 0 :(得分:8)

你是否可以通过采用比标准i % 2 == 0更简单而不是更棘手的解决方案来作弊? :)其次,你是否允许通过调用使用算术或按位运算的JDK方法作弊?如果是这样,你可以:

  • 将int作为String
  • 获取
  • 查看最后一个字符
  • 在交换机中使用该字符
  • 如果最后一个字符是' 0',' 2',' 4',' 6'则返回true或' 8'。

答案 1 :(得分:3)

这个怎么样:

    int value = 7;

    String message = String.format("Is %s odd or even?",value);
    Object[] options = {"Odd","Even"};
    int n = JOptionPane.showOptionDialog(null,
            message,
            "Is It Odd Or Even",
            JOptionPane.YES_NO_OPTION,
            JOptionPane.QUESTION_MESSAGE,
            null,
            options,
            options[0]);
    System.out.println(String.format("%s is %s", value, options[n]));

原始问题没有给出数据集的大小。

答案 2 :(得分:2)

这似乎是一个非常奇怪的任意条件,但是到底是什么。只需将其转换为字符串并检查最后一个字符是0,2,4,6还是8。

答案 3 :(得分:2)

我相信答案是,你不能。

任何解决方案可能会考虑由按位或数学运算符组成。您可以调用或编写一个隐藏此方法的方法,但它使用的操作符完全相同。


你可以做到

public static boolean isOdd(int n) {
    return (n << -1) < 0;
}

答案 4 :(得分:0)

尝试下面的java代码。

String[] sarr = {"Odd Number","Even Number"};

int num = 7;

int x = num%2;

System.out.println(sarr[x]);

答案 5 :(得分:0)

我可以想到以下几种检查数字是否为奇数(按性能顺序列出)的方法:

// Using bit-manipulation (fastest)
boolean odd = ((num & 1) == 1);

// Using remainder (fast, but division is slower than bit-manipulation)
boolean odd = ((num % 2) == 1);

// Using conversion to string (very slow, but doesn't use any operators)
boolean odd = Integer.toString(num, 2).endsWith("1");