我是Java的新手,并且有一个关于将Java中单个二进制值的数字加在一起的问题。
例如,
如果二进制值的偶数为1,我想将字符串“even”输出到另一个方法。如果有一个奇数1,那么我想输出字符串值“奇数”。
以下是我的代码示例:
String eoro;
String name = "1010101011";
int num = Integer.parseInt(name, 2);
System.out.println(num);
if(num % 2 == 0)
eoro = "even";
else
eoro = "odd";
System.out.println(eoro);
输出显示为
683
odd
我不确定Integer.parseInt(name,2);这是正确的方法,但我不知道另一种求和单个String值的数字的方法。
请不要粗鲁,谢谢你能提供的任何帮助!
答案 0 :(得分:1)
最短的可能是:
new BigInteger(value, 2).bitCount();
new BigInteger(value, 2)
将字符串解析为二进制整数,bitCount()
计算位数。我使用BigInteger
,因为它不清楚,字符串可能有多长。如果您确定字符串足够短,可以使用Integer
或Long
或其他类型。
或者你可以在字符串中找到1
。
int result = 0;
for (char c: value.toCharArray()) {
result += c == '1' ? 1 : 0;
}
答案 1 :(得分:0)
Integer.parseInt
绝对不是正确的方法。它会将给定的字符串解析为整数,但奇数或偶数的整数与“1”的数字无关。例如,请考虑以下事项:
public static void main(String[] args) {
String eoro;
String name = "10";
int num = Integer.parseInt(name, 2);
System.out.println(num);
if(num % 2 == 0)
eoro = "even";
else
eoro = "odd";
System.out.println(eoro);
}
这将打印
2
甚至
这不是您想要的输出。
在字符串中计算1
的简单方法是对其字符进行流式处理并计算它们:
long numOnes = name.chars().filter(c -> c == '1').count();
答案 2 :(得分:0)
public static void main(String[] args) {
// declare variables
String name = "1010101011";
String eoro = (name.chars().filter(c -> c == '1').count() % 2 == 0)?"even":"odd";
System.out.print(eoro);
}
答案 3 :(得分:-1)
如果二进制值的偶数为1,我想输出字符串“even”
仅仅因为二进制值的偶数为1并不意味着该数字的十进制表示为偶数值,或num % 2 == 0
。例如,如果您有1
作为最低有效值,就像您在这里一样,这将始终使值为奇数。
您可以使用循环计数,或者像这样。
int ones = name.replace("0", "").length();
if (ones % 2 == 0)
System.out.println("even");
else
System.out.println("odd");
参考:Java: How do I count the number of occurrences of a char in a String?