Java 如何使用布尔数组中的数据创建char[]?

Java 如何使用布尔数组中的数据创建char[]?,java,arrays,Java,Arrays,我有一个Boolean数组,我试图创建一个对应的char数组,这样新数组中的每个true对应一个1,每个false对应一个0。这是我的代码,但新数组似乎是空的,因为没有打印任何内容,Boolean nums[]可以很好地打印 char[] digits = new char[n]; for (int i = 0; i < n; i++) { if (nums[i]) { digits[i] = 1; } else if (!nums[i]) {

我有一个
Boolean
数组,我试图创建一个对应的char数组,这样新数组中的每个true对应一个1,每个false对应一个0。这是我的代码,但新数组似乎是空的,因为没有打印任何内容,
Boolean nums[]
可以很好地打印

char[] digits = new char[n];
for (int i = 0; i < n; i++) {
    if (nums[i]) {
        digits[i] = 1;
    }
    else if (!nums[i]) {
        digits[i] = 0;
    }
}
for (int k = 0; k < n; k++) {
    System.out.print (digits[k]);
}
char[]位=新字符[n];
对于(int i=0;i
您的问题是
1
0
周围没有引号

for (int i = 0; i < n; i++) {
    if (nums[i]) {
        digits[i] = '1';
    }
    else {
        digits[i] = '0';
    }
}
for(int i=0;i
如果没有引号,它们将从
int
s转换为
char
s。0实际上是空字符(
NUL
),1是标题或类似内容的开头。Java字符使用UTF-16编码(它们有16位长)。字符“0”和“1”实际上分别由48和49(十进制)编码

编辑:实际上,不要看ASCII表,而是看。Unicode实际上是ASCII的超集,但它可能比ASCII表更有用,根据Oracle Java教程中的Java语言基础课:

char数据类型是单个16位Unicode字符。它的最小值为“\u0000”(或0),最大值为“\uffff”(或65535)

Unicode值0(零)是非打印字符,Unicode值1(一)也是。这就是为什么你没有看到任何印刷品。将
数字
更改为
整数
数组,或用字符文字填充,如
'0'
'1'

如果使用
int
array,以下代码就足够了:

int[]位=新的int[n];

对于(int i=0;i您可以这样转换:

    public static void main(String[] args) {
        int n = 5;
        boolean[] nums = { true, false, true, false, true };
        char[] digits = new char[n];
        for (int i = 0; i < n; i++) {
            digits[i] = nums[i] ? '1' : '0';
        }
    }
publicstaticvoidmain(字符串[]args){
int n=5;
布尔[]nums={true,false,true,false,true};
字符[]位=新字符[n];
对于(int i=0;i
你可以做类似的事情

char[] myChars = new char[n/16];
for(int i=0;i<nums.length/16;i++);{
  String myChar ="";
  for(int j=0;j<16;j++){
     if(nums[i*16+j])
        myChar+="1";
     else
        myChar+="0";
  }
 myChars[i]=Integer.parseInt(myChar,2);
 }
char[]myChars=新字符[n/16];

对于(int i=0;如果您的else不需要第一条注释,因为如果当前索引值不为true,它将始终为false,那么也不需要使用
nums[i]==true
,只需使用
nums[i]
,因为这本身就是一个布尔值,您还可以直接使用条件if
数字[i]=nums[i]?1:0
并完全转储if-else块
n
的值是多少?你能给我们看一下
数字的内容吗?@Youans:我还不会选择三元运算符,他显然是个初学者,所以最好从更易于阅读的代码开始。