我有一个Boolean数组,我正在尝试创建一个相应的字符数组,以便新数组中的每个 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]);
}
Run Code Online (Sandbox Code Playgroud)
use*_*ser 11
你的问题是你没有在1and周围加上引号0。
for (int i = 0; i < n; i++) {
if (nums[i]) {
digits[i] = '1';
}
else {
digits[i] = '0';
}
}
Run Code Online (Sandbox Code Playgroud)
没有引号,它们从ints 转换为chars。0 实际上是空字符 ( NUL),而 1 是标题的开始或类似的东西。Java 字符使用 UTF-16 编码(它们有 16 位长)。字符 '0' 和 '1' 实际上分别由 48 和 49(十进制)编码。
编辑:其实,不要看 ASCII 表,看Unicode character set。Unicode 实际上是 ASCII 的超集,但它可能比 ascii 表更有用