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]
グラフィカルに:
どうすればこの問題に対処できますか?
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]
グラフィカルに:
どうすればこの問題に対処できますか?
次のようなものを試すことができます:
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 を使用するようにコードを変更しました。ブール値を使用するよりも読みやすいです。
あなたの質問が正しければ、あなたは各文字を 5x7 ピクセルのグリッドで表現しようとしています。これを行う 1 つの方法は、すべての文字 (必要に応じて「A」から「Z」まで) 表現をハードコードされたマップに格納し、必要に応じてそれらを返す/アクセスすることです。