0

int を char に変換して出力する際に​​問題があります。私は、グラフ理論(現在私がいるクラス)のためのプログラムを持っています。1つのことを除いて、すべてが正常に機能します。

さまざまな種類のグラフを作成するクラスがあります。グラフの Node を作成する 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 にコードを出力するときです。

最初は数字の配列だけを印刷していましたが、ノードを印刷すると、どの番号がどのノードに対応するか誰もわかりませんでした。ということで、このように数字の後に文字を追加することにしました。[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

これらの 2 行が実行されると、次のようになります。

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 に答える