//编辑:抱歉,我没有粘贴重要代码。我用剩下的代码编辑了帖子。
我将整数数组转换为字符数组有问题。所有东西都会编译,但是在施法后没有数字。
代码:
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
如何解决?
答案 0 :(得分:0)
当你做
时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
所以,总而言之,你的“cast int [] to char []”完美无缺,只是你认为它会做别的事情