5


これを(以下のコードで)テストする場合、のASCII値char 'a'10であり、のASCII値char 'b'11です。ただし、とを連結するchar 'a'char 'b'、結果は195になります。

私のロジックおよび/またはここでの理解にエラーがあるはずです...文字を文字列として連結できないことは理解していますが、ASCIIのint値195何を表しますか?

そして、そのような結果の使用法は何でしょうか?


これが私のコードです:

public class Concatenated
{
    public static void main(String[] args)
    {
        char char1 = 'a';
        char char2 = 'b';

        String str1 = "abc";

        String result = "";
        int intResult = 0;
        Concatenated obj = new Concatenated();

        // calling methods here
        intResult = obj.getASCII(char1);
        System.out.println("The ASCII value of char \"" + char1 + "\" is: " + intResult + ".");

        intResult = obj.getASCII(char2);
        System.out.println("The ASCII value of char \"" + char2 + "\" is: " + intResult + ".");

        result = obj.concatChars(char1, char2);
        System.out.println(char1 + " + " + char2 + " = " + result + ".");

        result = obj.concatCharString(char1, str1);
        System.out.println("The char \"" + char1 + "\" + the String \"" + str1 + "\" = " + result + ".");
    } // end of main method

    public int getASCII(char testChar)
    {
        int ans = Character.getNumericValue(testChar);

        return ans;
    } // end of method getASCII

    public String concatChars(char firstChar, char secondChar)
    {
        String ans = "";
        ans += firstChar + secondChar; // "+=" is executed last

        return ans; // returns ASCII value
    } // end of method concatChars

    public String concatCharString(char firstChar, String str)
    {
        String ans = "";
        ans += firstChar + str;

        return ans;
    } // end of method concatCharString
} // end of class Concatenated



...画面に出力される結果は次のとおりです。

The ASCII value of char "a" is: 10.
The ASCII value of char "b" is: 11.
a + b = 195.
The char "a" + the String "abc" = aabc.



--編集:-

@ Marko Topolnikが以下で指摘しているように、正しいASCII値( UNICODE値 ではないgetASCII)を返すには、メソッドをこれに変更する必要があります。

public int getASCII(char testChar)
{
    // int ans = Character.getNumericValue(testChar); ...returns a UNICODE value!
    int ans = testChar;

    return ans;
} // end of method getASCII

後世のために、これを反映するために上記のコードを変更していません。

4

2 に答える 2

5

間違ったメソッドを呼び出していますgetNumericValue。charを数字として解釈します。たとえば、16進数Aの値は10です。

代わりにすべきことは、charの値を直接使用することです。intたとえば、にキャストします。

于 2012-08-26T21:01:49.287 に答える
3

Character.getNumericValue()指定されたUnicode文字が表すint値を返します。Javadocsによると、getNumericValue()「大文字と小文字の両方のA tp Z文字は、10から35までの数値を持ちます。これは、これらの文字値に数値を割り当てないUnicode仕様とは無関係です。」

ただし、concatChars()メソッドにそれらを追加すると、追加される2つの値はASCII値(97 + 98)になります。

于 2012-08-26T21:00:23.790 に答える