0

我有一个将整数转换为字符以打印出来的问题。我有一个程序专门用于图论(我目前正在上课)。除了一件事,一切都很好。

我有创建不同类型图表的类。有一个 Node 类来为图制作节点。它们保存值和名称,名称是基于 int 字符值的字母。创建图表时,每个节点都是这样创建的

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 中为 Graph 打印代码时。

起初我让它只打印数字数组,但是当它打印节点时,没有人会知道什么数字与什么节点对应。所以我决定像这样在数字之后添加字符。[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 的字符值时不起作用。

4

3 回答 3

4

运行这两行时:

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

x将首先设置为包含 SOH 字符的字符串,然后是 STX 字符,依此类推——所有 ASCII 控制字符。当您将它们包含在较大的字符串中并尝试将其打印出来时,这些将不会很好地工作。也许你的意思是(char)(i+97)?我不确定。

于 2013-11-15T00:05:31.633 回答
0

试试String.valueOf((char) i);吧。

于 2013-11-15T00:01:17.610 回答
-1

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

int x = (int)'a';
于 2013-11-15T00:05:01.820 回答