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:我还不会选择三元运算符,他显然是个初学者,所以最好从更易于阅读的代码开始。