java - 我创建了十进制到二进制的方法,我想在二维数组中使用它,但我不能
问题描述
我创建了简单的十进制到二进制方法,如下所示:
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] = ?
}
}
}
但我无法为每个数组块实现所有二进制值。
解决方案
如果你需要自己制作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
-loop 中的计数器,我将把它留给你决定。
对于用户输入中的每一行,将其拆分为连字符'-'
:
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