0

Android で文字を 2 次元配列に変換する必要があるプロジェクトに取り組んでいます。たとえば、文字 (または文字列) "A" がある場合、次のような 2 次元配列を作成する必要があります。

[0,0,1,0,0]   
[0,1,0,1,0]    
[0,1,0,1,0]    
[1,0,0,0,1]    
[1,1,1,1,1]    
[1,0,0,0,1]    
[0,0,0,0,0]

グラフィカルに:

ここに画像の説明を入力

どうすればこの問題に対処できますか?

4

2 に答える 2

1

次のようなものを試すことができます:

String str = "ABC";
List<byte[][]> codedString = new ArrayList<byte[][]>();

for ( char c : str.toCharArray() ) {

    switch ( c ) {

        case 'A':
            codedString.add( new byte[][]{
                { 0, 0, 1, 0, 0 },
                { 0, 1, 0, 1, 0 },
                { 0, 1, 0, 1, 0 },
                { 1, 0, 0, 0, 1 },
                { 1, 1, 1, 1, 1 },
                { 1, 0, 0, 0, 1 },
                { 0, 0, 0, 0, 0 } } );
            break;

        case 'B':
            codedString.add( new byte[][]{
                { 1, 1, 1, 1, 0 },
                { 1, 0, 0, 0, 1 },
                { 1, 0, 0, 0, 1 },
                { 1, 1, 1, 1, 0 },
                { 1, 0, 0, 0, 1 },
                { 1, 0, 0, 0, 1 },
                { 1, 1, 1, 1, 0 } } );
            break;

        case 'C':
            codedString.add( new byte[][]{
                { 0, 1, 1, 1, 0 },
                { 1, 0, 0, 0, 1 },
                { 1, 0, 0, 0, 0 },
                { 1, 0, 0, 0, 0 },
                { 1, 0, 0, 0, 0 },
                { 1, 0, 0, 0, 1 },
                { 0, 1, 1, 1, 0 } } );
            break;

    }

}

for ( byte[][] codedChar : codedString ) {
    for ( int i = 0; i < codedChar.length; i++ ) {
        for ( int j = 0; j < codedChar[i].length; j++ ) {
            System.out.print( codedChar[i][j] == 1 ? "X" : " " );
        }
        System.out.println();
    }
}

すべてのパターンをハードコーディングする必要があります。

編集:パターンを表すためにゼロと 1 を使用するようにコードを変更しました。ブール値を使用するよりも読みやすいです。

于 2012-09-03T04:35:05.420 に答える
0

あなたの質問が正しければ、あなたは各文字を 5x7 ピクセルのグリッドで表現しようとしています。これを行う 1 つの方法は、すべての文字 (必要に応じて「A」から「Z」まで) 表現をハードコードされたマップに格納し、必要に応じてそれらを返す/アクセスすることです。

于 2012-09-03T04:40:34.437 に答える