0

以下は、文字列を配列の要素に変換する私の単純なプログラムであり、charAt(i)ドキュメントに従って想定されているものを返しません。私のコードは

public class StringToArray {

    public static void main(String[] args){
        String test = "12345";
        fromPuzzleString(test);
    }

    public static void fromPuzzleString(String puzzle) {
        int puz[] = new int[puzzle.length()];
        for (int i = 0; i < puzzle.length(); i++) {
            puz[i] = puzzle.charAt(i);
        }
        for (int c : puz) {
            System.out.println(c);

        }
    }
}

期待される出力:1 2 3 4 5

実際の出力:49 50 51 52 53

しかし、私が puz[i] = puzzle.charAt(i)-"O"; を使用すると その作業罰金..!

4

8 に答える 8

4

これは、文字の値が、intそれを表すために使用される値と同じではないためです。puzとして宣言char[]すると、問題が解決し、期待どおりに数値が出力されます。

于 2013-03-20T13:05:13.573 に答える
4

文字のユニコード ポイント値を表示しています。代わりに、使用できます

System.out.println(Character.getNumericValue(c));
于 2013-03-20T13:03:54.593 に答える
2

試す

    char puz[] = new char[puzzle.length()];
    for (int i = 0; i < puzzle.length(); i++) {
        puz[i] = puzzle.charAt(i);
    }
    for (char c : puz) {
        System.out.println(c);

    }
于 2013-03-20T13:05:03.200 に答える
2

その正常。

数値1ではなく文字列「1」を使用します。数値を取得するには、Integer.paserInt(yourString);を使用することをお勧めします。その後、あなたはあなたの番号を取得します。

例として:

    public static void main(String[] args){
        String test = "12345";
        fromPuzzleString(test);
    }

    public static void fromPuzzleString(String puzzle) {
        int puz[] = new int[puzzle.length()];
        for (int i = 0; i < puzzle.length(); i++) {
            puz[i] = Integer.parseInt(puzzle.charAt(i));
        }
        for (int c : puz) {
            System.out.println(c);

        }
    }
于 2013-03-20T13:05:09.003 に答える
1

取得したcharをintにキャストしているため、Javaはその整数表現を出力します。結果を文字列の配列として保存し、その配列をループして印刷します。

于 2013-03-20T13:05:20.943 に答える
0

int配列を使用しているため、ASCII値が出力されます。次の操作を実行できます。

public static void fromPuzzleString(String puzzle) {    
    for (int i = 0; i < puzzle.length(); i++) {
        System.out.println( puzzle.charAt(i));
    }
}

2つのforループと配列を不必要に使用する必要はありません。

于 2013-03-20T13:11:19.040 に答える
0

暗黙的に に変換charしますint。char '1' は 1 と等しくありません。次のように char にキャストできます。

 System.out.println((char)c);
于 2013-03-20T13:08:16.443 に答える
0

"charAt(i) is not returning what it is supposed to according to documentation"

charを の中に入れることはできませんint。そうでなければ、そのユニコード値を返します。

返さReal output: 49 50 51 52 53れる値は Unicode ASCII 文字コードです

これで問題が解決します:

public class StringToArray {

        public static void main(String[] args){
            String test = "12345";
            fromPuzzleString(test);
        }

        public static void fromPuzzleString(String puzzle) {
            char[] puz = new char[puzzle.length()];
            for (int i = 0; i < puzzle.length(); i++) {
                puz[i] = puzzle.charAt(i);
            }
            for (char c : puz) {
                System.out.println(c);

            }
        }
    }

ただし、メモリを節約するために、配列を宣言せず、次のように値をすぐに表示することをお勧めします。

public class StringToArray {

        public static void main(String[] args){
            String test = "12345";
            fromPuzzleString(test);
        }

        public static void fromPuzzleString(String puzzle) {
           for (int i = 0; i < puzzle.length(); i++) {
                System.out.println(puzzle.charAt(i));
            }
        }
    }
于 2013-03-20T13:24:40.313 に答える