【问题标题】:casting int[] to char[] does not work properly将 int[] 转换为 char[] 无法正常工作
【发布时间】:2015-01-21 05:42:20
【问题描述】:

// 已编辑:抱歉,我没有粘贴重要代码。我用其余的代码编辑了这篇文章。

我在将整数数组转换为字符数组时遇到问题。一切都编译了,但转换后没有数字。

代码:

 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 数组在哪里?你输入了什么?
  • 所以你按我说的打印字符,你为什么希望打印整数?
  • 我想在字符数组中包含整数。我该怎么做?我必须用 char Array 调用另一个函数,包括 Integers 作为参数...也许还有另一种方法可以从文件中获取数字并将它们放入 char Array?

标签: java arrays casting char integer


【解决方案1】:

当你这样做时

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会包含save的东西,但是当你尝试打印它们时,java会打印出这个数字对应的ASCII符号,意思是:

- B
. C

所以,总而言之,您的“将 int[] 转换为 char[]”效果很好,只是您认为它会做其他事情

【讨论】:

  • 我想在字符数组中包含整数。我该怎么做?我必须用 char Array 调用另一个函数,包括 Integers 作为参数......也许还有另一种方法可以从文件中获取数字并将它们放入 char 数组中?我试图将整数从文件放入字符串,然后调用函数 toCharArray();但假设我有一个 88 号码,当我调用函数时,我收到 8、8 ......我不知道如何解决它。还包括空格。
  • @csal 这是一个 A-B 问题。请解释为什么你首先需要 char 中的整数
  • 哦,我明白了。那么我怎样才能打印它来接收数字呢?可能吗? :)
  • 我有一个以两个 char[] 作为参数的函数。我的文件包含两行整数。我必须从文件中获取这些数字,并以某种方式将它们放入两个 char[] 数组中以调用该函数。 :)
  • @csal 您可以通过编写 System.out.print(buffer2[j] + " "); 来打印它们;
猜你喜欢
  • 2020-05-20
  • 1970-01-01
  • 1970-01-01
  • 2013-10-31
  • 2012-10-19
  • 1970-01-01
  • 2013-09-07
  • 1970-01-01
  • 2011-07-03
相关资源
最近更新 更多