我正在做一个需要在 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]
图形化:
我该如何处理这个问题?
我正在做一个需要在 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]
图形化:
我该如何处理这个问题?
您可以尝试以下方法:
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();
}
}
您将需要对所有模式进行硬编码。
编辑:我将代码更改为使用零和一来表示模式。它比使用布尔值更容易阅读。
如果我的问题是正确的,那么您正试图在 5x7 像素网格中表示每个字符。一种方法是将所有字符(“A”到“Z”以及更多,如果你愿意的话)表示存储在一个硬编码的映射中,并在必要时返回/访问它们。