我正在开发一个需要在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]
图形:
我该如何处理这个问题?
答案 0 :(得分: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来表示模式。它比使用布尔语更容易阅读。
答案 1 :(得分:0)
如果我的问题是正确的,那么您正试图在5x7像素网格中表示每个字符。一种方法是在硬编码的地图中存储所有字符('A'到'Z'以及更多,如果你需要的话),并根据需要返回/访问它们。