3

ユーザーが暗号化するコード ワードとテキストを入力すると、プログラムは XOR マスク (テキストにコード) を配置して通常の表示に戻す必要がありますが、マスクを適用しただけで通常の表示に戻らないのはなぜですか?

public void onClick(View arg0) {
        code = etCode.getText().toString();
        text = etText.getText().toString(); 

        while(code.length()<text.length()){
            code+=code;
        }
        char[] Ccode = code.toCharArray();
        char[] Ctext = text.toCharArray();

        for(i=0;i<Ctext.length;i++){
            Ctext[i]^=Ccode[i];
        }

        rezult=Ctext.toString();

        for(i=0;i<Ctext.length;i++){
            Ctext[i]^=Ccode[i];
        }
        rezult+="\n";
        rezult+=Ctext.toString();
        tvMain.setText(rezult);
        }
    });

入力すると、次のようcode : code , text : text に表示されます。

[C@40527808
[C@40527808 
4

3 に答える 3

2

配列のアドレスを出力します。あなたはコンテンツが欲しいです。配列には有用なtoString()mwthod がありません。

変化する

rezult=Ctext.toString();

rezult=new String(Ctext);

同じ

rezult+=Ctext.toString();

=>

rezult+=new String(Ctext);
于 2013-01-20T16:53:54.483 に答える
0

Java では、toString()配列に対するデフォルトの操作は内部識別子に変換することです。これが表示されているものです。使用してみてください:

rezult = new String(Ctext);
...
rezult += new String(Ctext);

または、表示したいものに応じて(Ctext表示可能な文字が常に含まれているかどうかは明確ではないため):

rezult = Arrays.toString(Ctext);
...
rezult += Arrays.toString(Ctext);

これにより、角括弧で囲まれた文字値のコンマ区切り配列が得られます。

于 2013-01-20T16:52:45.120 に答える
0

toString() を使用して char 配列を String に変換することはできません。

使用するtvMain.setText(new String(Ctext));

于 2013-01-20T16:53:30.590 に答える