//已编辑:抱歉,我没有粘贴重要的代码。我用其余代码编辑了这篇文章。
我在将整数数组转换为字符数组时遇到问题。一切都可以编译,但转换后没有数字。
代码:
plik1 = new Scanner(new File("plik1.txt"));
String line1 = plik1.nextLine();
String line2 = plik1.nextLine();
line1.trim();
line2.trim();
String[] numberArray1 = line1.split(" ");
String[] numberArray2 = line2.split(" ");
int length_line1 = numberArray1.length;
int length_line2 = numberArray2.length;
int buffer1[] = new int[length_line1];
int buffer2[] = new int[length_line2];
for(j=0; j<buffer1.length; j++) {
buffer1[j] = Integer.valueOf(numberArray1[j]);
}
for(j=0; j<buffer2.length; j++) {
buffer2[j] = Integer.valueOf(numberArray2[j]);
}
char[] buffer11 = new char[buffer1.length];
char[] buffer22= new char[buffer2.length];
for(j=0; j<buffer1.length; j++) {
char number = (char) buffer1[j];
buffer11[j] = number;
}
for(j=0; j<buffer2.length; j++) {
char number = (char) buffer2[j];
buffer22[j] = number;
}
for(j=0; j<buffer11.length; j++)
System.out.print(buffer11[j] + " ");
System.out.println();
for(j=0; j<buffer22.length; j++)
System.out.print(buffer22[j] + " ");
这是打印函数显示的内容:
7 + Z X
B $ + N X
如何解决?
最佳答案
当你这样做
char number = (char) buffer1[j];
实际上,您将整数值放入 char
中,但根据 ascii table ,值为 43 的 char 是“+”加号。 ,这就是为什么你会得到你正在谈论的输出。
我给你举个例子:
假设plik1.txt
包含
45, 66
46, 67
然后在阅读 numberArray1
和 numberArray2
后包含
["45", "66"]
["46", "67"]
然后 buffer1
和 buffer2
包含
[45, 66]
[46, 67]
现在buffer11
和buffer22
将包含保存的东西,但是当你尝试打印它们时,java将打印与该数字对应的ASCII符号,意思是:
- B
. C
所以,总而言之,你的“将 int[] 转换为 char[]” 工作得很好,只是你认为它会做其他事情
关于java - 将 int[] 转换为 char[] 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27089124/