为什么 Stringbuilder 显示这样的输出。[000000[I@232204a1[I@232204a1[I@232204a1[I@232204a1]
Why Stringbuilder is displaying output like this.[000000[I@232204a1[I@232204a1[I@232204a1[I@232204a1]
我正在尝试将 int 转换为指定长度的位并使用 StringBuilder 存储它们。但我的输出不是位串而是显示一些随机数据。
我参考了这个答案
static StringBuilder final_string = new StringBuilder();
public static void main (String[] args) {
int[] values = {2,4,7,8};
int[] length = {8,10,10,7};
appendString(values, '0', length);
}
public static void appendString(int[] in, char padChar, int[] length) {
for(int j = 0; j< in.length;j++){
String temp =Integer.toBinaryString(in[j]);
int temp_length = length[j];
StringBuilder sb = new StringBuilder(temp_length);
sb.append(in);
for (int i = temp.length(); i < temp_length; i++) {
sb.insert(0, padChar);
}
final_string.append(sb);
}
System.out.println((final_string.toString()));
}
以上代码的输出是:
000000[I@232204a1[I@232204a1[I@232204a1[I@232204a1
预期输出为:
00000010 0000000100 0000000111 0001000
两个错误:
1。 sb.append(in);
您正在追加整个数组,这意味着只向编译器添加地址 (@xxxxxx)。您是说 sb.append(in[j]);
吗?
2。 final_string.append(sb);
您不能按照您假设的方式将 StringBuilder 附加到另一个。这样你实际上是在使用 StringBuilder append(Object obj),所以它只是将它附加为一个对象,这也意味着作为一个地址或类似的东西。考虑改用 final_string.append(sb.toString());
或 final_string.append(sb.substring(0));
。
希望我能帮到你
我正在尝试将 int 转换为指定长度的位并使用 StringBuilder 存储它们。但我的输出不是位串而是显示一些随机数据。
我参考了这个答案
static StringBuilder final_string = new StringBuilder();
public static void main (String[] args) {
int[] values = {2,4,7,8};
int[] length = {8,10,10,7};
appendString(values, '0', length);
}
public static void appendString(int[] in, char padChar, int[] length) {
for(int j = 0; j< in.length;j++){
String temp =Integer.toBinaryString(in[j]);
int temp_length = length[j];
StringBuilder sb = new StringBuilder(temp_length);
sb.append(in);
for (int i = temp.length(); i < temp_length; i++) {
sb.insert(0, padChar);
}
final_string.append(sb);
}
System.out.println((final_string.toString()));
}
以上代码的输出是: 000000[I@232204a1[I@232204a1[I@232204a1[I@232204a1
预期输出为: 00000010 0000000100 0000000111 0001000
两个错误:
1。 sb.append(in);
您正在追加整个数组,这意味着只向编译器添加地址 (@xxxxxx)。您是说 sb.append(in[j]);
吗?
2。 final_string.append(sb);
您不能按照您假设的方式将 StringBuilder 附加到另一个。这样你实际上是在使用 StringBuilder append(Object obj),所以它只是将它附加为一个对象,这也意味着作为一个地址或类似的东西。考虑改用 final_string.append(sb.toString());
或 final_string.append(sb.substring(0));
。
希望我能帮到你