Сложение двух двоичных чисел - PullRequest
0 голосов
/ 21 февраля 2019

Я пытался сопоставить каждое число, помещая числа в массивы символов и сопоставляя их каждое с условиями 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));
    }

}

1 Ответ

0 голосов
/ 21 февраля 2019

Вы можете разобрать биты в целое число с помощью 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);
}
...