如何在不使用数学/按位运算符的情况下找到偶数/奇数?
答案 0 :(得分:8)
你是否可以通过采用比标准i % 2 == 0
更简单而不是更棘手的解决方案来作弊? :)其次,你是否允许通过调用使用算术或按位运算的JDK方法作弊?如果是这样,你可以:
答案 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");