为什么Character.toString((char)i)不会在某个地方工作

时间:2013-11-14 23:57:25

标签: java

我有一个问题,即将ints转换为chars以打印出来。我有一个程序只是为了它的图形理论(我现在正在上课)。一切都很好,除了一件事。

我有类来创建不同类型的图形。有一个Node类可以为图形创建节点。它们包含值和名称,名称是基于int的字符值的字母。创建Graph时,每个节点都是这样创建的

Node(String name, int value).

以下是正在创建的节点的示例。

int a = 97;
int alpha = a+i-1;
int alphaCnt = 0;
if(alpha < 123 && alphaCnt == 0){
    String nodeName = Character.toString((char)alpha);
    Node node = new Node(nodeName, i);
    this.addnode(node);
}

这完全没问题。如果i = 1,则名称变为“a”,如果i = 2,则变为“b”,依此类推。 我遇到的问题是当我在图形的toString中打印代码时。

起初我只打印了数字数组,但是当它打印出节点时,没有人会知道什么数字与哪些节点相关。所以我决定在这个数字之后添加字符。 [2(b),1(a)...... 5(e)]。

但使用完全相同的转换不会起作用。 我的toString方法。(部分)。 pCode是代码的int数组。代码中的每个数字都放在一个数组中。

for(int i = 0; i < pCode.length; i++){
    String x = Character.toString((char)(i+1));
    if(i != pCode.length){
        System.out.println(Integer.toString(pCode[i]) + "(" + x + ")");
        System.out.println(x.toString());
        System.out.println(Character.toString((char)(i+1)));
        System.out.println(Character.toString((char)pCode[i]));
    }
}

我的鼻子下面可能有些东西,但无论我做什么,我都无法使用数字打印字符,我甚至无法将其打印出来。

为什么Character.toString((char)intVal))在创建节点时有效,但在我只想打印int的字符值时却不起作用。

3 个答案:

答案 0 :(得分:4)

运行这两行时:

for(int i = 0; i < pCode.length; i++){
    String x = Character.toString((char)(i+1));
    ...

x将首先设置为包含SOH字符的字符串,然后设置在STX字符旁边,依此类推---所有ASCII控制字符。当你将它们包含在一个更大的字符串中并尝试将其打印出来时,它们将无法正常工作。也许你的意思是(char)(i+97)?我不确定。

答案 1 :(得分:0)

请尝试String.valueOf((char) i);

答案 2 :(得分:-1)

您可以直接将字符解析为int:

int x = (int)'a';