我像这样创建了简单的十进制到二进制方法:
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] = ?
}
}
}
但是我不能为每个数组块实现所有二进制值。
答案 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