Я создал десятичный в двоичный метод, и я хочу использовать его в массиве 2D, но я не могу - PullRequest
0 голосов
/ 10 декабря 2018

Я создал простой десятичный к двоичному методу, как этот:

public static int[] convertDectoB(int number, int size) {
    int binary[] = new int[size];
    for (int a = number; a > 0 && size > 0; size--, a = a / 2) {
        binary[size - 1] = a % 2;
    }
    return binary;
}

Я попросил пользователя ввести такие цифры:

"Введите цифры:"

4-2-7.

Цель состоит в том, чтобы преобразовать эти 3 числа в двоичное и вывести его:

1 0 0

0 1 0

1 1 1

Я также создал метод numberFinder для извлечения целых чисел в строку, введенную пользователем:

public static int[] numberFinder(String numbers, int size) {
    int numaraa[] = new int[size];
    int a = 0;
    for (int i = 0; i < numaraa.length; i++) {
        for (; a < numbers.length(); a++) {
            if (numbers.charAt(i) == '-')
                i++;
            else if (a == 0) {
                if (Character.isDigit(numbers.charAt(a)))
                    numaraa[i] += numbers.charAt(a);
            }
            else {
                if (Character.isDigit(numbers.charAt(a)))
                    numaraa[i] += numbers.charAt(a);
            }
        }
    }
    return numaraa;
}

В конце я создал двумерный массив и хочу реализовать следующие двоичные значения:

for (int i = 0; i < mainarray.length; i++) {
        for (int j = 0; j < mainarray[i].length; j++) {
            mainarray[i][j] = ? 
        }
    }
}

Но я не могу реализовать все двоичные значения для каждого блока массива.

1 Ответ

0 голосов
/ 11 декабря 2018

Если вам нужно создать свой собственный метод toBinaryString(), в Интернете есть множество примеров, например заимствование логики из этого ответа Выведите целое число в двоичном формате на Java :

public static String intToString(int number) {
        StringBuilder result = new StringBuilder();

        for(int i = 2; i >= 0 ; i--) {
            int mask = 1 << i;
            result.append((number & mask) != 0 ? "1" : "0");
        }
        return result.toString();
    }

Примечание: я изменил этот метод, чтобы он содержал только 3-значные двоичные коды, поэтому наибольшее целое число, которое он может преобразовать, составляет 7.Однако если вы хотите преобразовать большие целые числа, скажем, до 16 или 32, вам нужно увеличить счетчик в for -цикле, который я оставлю на ваше усмотрение.

Для каждой строки в пользовательском вводе разделите ее на дефисный символ '-':

codes = line.split("-");
ListofCourses.addAll(Arrays.asList(codes));
...

Затем вызовите этот метод на вашем ListofCourses:

for(int r = 0; r < ListofCourses.size(); r++){
    System.out.println(intToString(Integer.parseInt(ListofCourses.get(r))));
}
ListofCourses.clear();

Тогда должно получиться ожидаемоевыход.Вот демо:

Ron's Copy

Enter 3 collections of course codes one collection per line
4-2-7

Size: 3 Sorted: [4, 2, 7]
100
010
111
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...