我有一个问题,即将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的字符值时却不起作用。
答案 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';