将int []转换为char []无法正常工作

时间:2014-11-23 12:48:08

标签: java arrays casting char integer

//编辑:抱歉,我没有粘贴重要代码。我用剩下的代码编辑了帖子。

我将整数数组转换为字符数组有问题。所有东西都会编译,但是在施法后没有数字。

代码:

 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 

如何解决?

1 个答案:

答案 0 :(得分:0)

当你做

char number = (char) buffer1[j];

你实际上把整数值放在char中,但是根据ascii table,值为43的char是“+”加号,这就是为什么你得到了你正在谈论的输出。

我会举个例子:

让我们说plik1.txt包含

45, 66
46, 67

然后在您阅读numberArray1numberArray2包含

之后
["45", "66"]
["46", "67"]

然后buffer1buffer2包含

[45, 66]
[46, 67]

现在buffer11buffer22将包含保存内容,但是当您尝试打印它们时,java将打印与此数字对应的ASCII符号,这意味着:

- B
. C

所以,总而言之,你的“cast int [] to char []”完美无缺,只是你认为它会做别的事情