gpt4 book ai didi

java - 两个二进制数相加

转载 作者:行者123 更新时间:2023-12-02 10:14:00 26 4
gpt4 key购买 nike

我尝试通过将数字放入 char 数组中来比较每个数字,并使用 if 条件逐个比较它们。每个结果都应该被覆盖,并且每个结果都应该保存在 String result 中,但整个操作的结果始终为空。 Java 调试器不工作,我不明白为什么它不工作。

import java.util.Scanner;

public class BinaryAdder {
public static String add(String binary1, String binary2) {

String result = "";
char[] safea = binary1.toCharArray();
char[] safeb = binary2.toCharArray();

int lb1 = binary1.length() - 1;
int lb2 = binary2.length() - 1;
char reminder = 0;

while (lb1 != 0 || lb2 != 0) {
if (safea[lb1] == 0 && safeb[lb2] == 0 && reminder == 0) {
result += "0";
lb1--;
lb2--;
} else if (safea[lb1] == 1 && safeb[lb2] == 0 && reminder == 0) {
result += "1";
lb1--;
lb2--;
} else if (safea[lb1] == 1 && safeb[lb2] == 1 && reminder == 0) {
result += "0";
reminder = 1;
lb1--;
lb2--;
} else if (safea[lb1] == 1 && safeb[lb2] == 1 && reminder == 1) {
result += "1";
reminder = 1;
lb1--;
lb2--;
} else if (safea[lb1] == 1 && safeb[lb2] == 0 && reminder == 1) {
result += "0";
reminder = 1;
lb1--;
lb2--;
} else if (safea[lb1] == 0 && safeb[lb2] == 1 && reminder == 1) {
result += "0";
reminder = 1;
lb1--;
lb2--;
} else if (safea[lb1] == 0 && safeb[lb2] == 1 && reminder == 0) {
result += "1";
lb1--;
lb2--;
} else if (safea[lb1] == 0 && safeb[lb2] == 0 && reminder == 1) {
result += "1";
lb1--;
lb2--;
}
}
return result;
}

public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("Summand: ");
String input1 = scan.next("(0|1)*");
System.out.print("Summand: ");
String input2 = scan.next("(0|1)*");
scan.close();
System.out.println("Result: " + add(input1, input2));
}

}

最佳答案

您可以使用 Integer.parseInt(s, radix) 将这些位解析为整数。您需要使用基数 2:

public static String add(String binary1, String binary2) {
int i1 = Integer.parseInt(binary1, 2);
int i2 = Integer.parseInt(binary2, 2);
return Integer.toBinaryString(i1 + i2);
}

关于java - 两个二进制数相加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54805311/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com