0

我正在做一个需要在 Android 中将字符转换为二维数组的项目。例如,如果我有字符(或字符串)“A”,我必须创建一个二维数组,如下所示:

[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();
    }
}

您将需要对所有模式进行硬编码。

编辑:我将代码更改为使用零和一来表示模式。它比使用布尔值更容易阅读。

于 2012-09-03T04:35:05.420 回答
0

如果我的问题是正确的,那么您正试图在 5x7 像素网格中表示每个字符。一种方法是将所有字符(“A”到“Z”以及更多,如果你愿意的话)表示存储在一个硬编码的映射中,并在必要时返回/访问它们。

于 2012-09-03T04:40:34.437 回答