我创建了将十进制转换为二进制的方法,并且想在2D数组中使用它,但是我不能

时间:2018-12-10 17:53:19

标签: java arrays multidimensional-array methods

我像这样创建了简单的十进制到二进制方法:

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。

目标是将这三个数字转换为二进制并打印出来:

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;
}

最后,我创建了2D数组,我想实现这些二进制值:

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

但是我不能为每个数组块实现所有二进制值。

1 个答案:

答案 0 :(得分:0)

如果您需要使用自己的toBinaryString()方法,则有很多在线示例,例如从此答案Print an integer in binary format in 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