アカウント名:
パスワード:
テーブルを使うといいのでしょうか?
String[][] KeyEventTable = {{KeyEvent.KEYCODE_1, "KEYCODE_1"}, {KeyEvent.KEYCODE_2, "KEYCODE_"}, …};for (int i = 0 ;; i++) if (keyCode == KeyEventTable[i][0]) ret=KeyEventTable[i][1];
2行で書けた ^^/
> 2行で書けた ^^/
だが待って欲しい。それを2行と言うなら、原典は1つのif文だから1行ではないだろうか。
keyCodeがsignedで負値だった場合への対応とか、想定外の値をとった場合の対応が必要そう。
8bitの時は全パターン網羅しておくのも大した手間じゃなかったが、16bit以上で網羅は・・やったことはあるんだけどw
色々突っ込みが入ったので直してみました。
// keyCodeはintでKeyEventで定義される値以外が入ってはいけない。違反したときの戻り値は不定String[][] KeyEventTable = {{Integer.toString(KeyEvent.KEYCODE_1), "KEYCODE_1"}, {Integer.toString(KeyEvent.KEYCODE_2), "KEYCODE_2"}};for (int i = 0 ; i KeyEventTable.length ; i++) if (keyCode == Integer.parseInt(KeyEventTable[i][0])) ret=KeyEventTable[i][1];
仕様を定義すればいいのですよね。1行増えてしまった(;_;)
あちこちで、「switch使え」とか「リフレクションって言ってるやつはわかってない」って言ってるのは、「線形探索するな」って意味だと思いますよ。せっかくソート済みのテーブルがあるなら、二分木探索しないと。
なるほど。
TreeMapとか
if (keyCode 32767) if (keyCode 16383) if (…とかやればいいんですね。
この例題だと、単に"KEYCODE_1"を返してるだけですが、教科書ということを踏まえればあとあとには押されたキーに応じた処理をそこに埋め込むようになるのではないかと予想します。
それならば、この単純な配列での実装は如何なものかと思うのです・・・・。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
にわかな奴ほど語りたがる -- あるハッカー
文句を言う資格のある奴はより良い案を出した奴だけだ。 (スコア:2)
Re: (スコア:0)
テーブルを使うといいのでしょうか?
String[][] KeyEventTable = {{KeyEvent.KEYCODE_1, "KEYCODE_1"}, {KeyEvent.KEYCODE_2, "KEYCODE_"}, …};
for (int i = 0 ;; i++) if (keyCode == KeyEventTable[i][0]) ret=KeyEventTable[i][1];
2行で書けた ^^/
Re:文句を言う資格のある奴はより良い案を出した奴だけだ。 (スコア:1)
> 2行で書けた ^^/
だが待って欲しい。
それを2行と言うなら、原典は1つのif文だから1行ではないだろうか。
keyCodeがsignedで負値だった場合への対応とか、想定外の値をとった場合の対応が必要そう。
8bitの時は全パターン網羅しておくのも大した手間じゃなかったが、
16bit以上で網羅は・・やったことはあるんだけどw
Re: (スコア:0)
色々突っ込みが入ったので直してみました。
// keyCodeはintでKeyEventで定義される値以外が入ってはいけない。違反したときの戻り値は不定
String[][] KeyEventTable = {{Integer.toString(KeyEvent.KEYCODE_1), "KEYCODE_1"}, {Integer.toString(KeyEvent.KEYCODE_2), "KEYCODE_2"}};
for (int i = 0 ; i KeyEventTable.length ; i++) if (keyCode == Integer.parseInt(KeyEventTable[i][0])) ret=KeyEventTable[i][1];
仕様を定義すればいいのですよね。
1行増えてしまった(;_;)
Re:文句を言う資格のある奴はより良い案を出した奴だけだ。 (スコア:1)
あちこちで、「switch使え」とか「リフレクションって言ってるやつはわかってない」って言ってるのは、「線形探索するな」って意味だと思いますよ。せっかくソート済みのテーブルがあるなら、二分木探索しないと。
Re: (スコア:0)
なるほど。
TreeMapとか
if (keyCode 32767)
if (keyCode 16383)
if (…
とかやればいいんですね。
Re: (スコア:0)
この例題だと、単に"KEYCODE_1"を返してるだけですが、教科書ということを踏まえれば
あとあとには押されたキーに応じた処理をそこに埋め込むようになるのではないかと予想します。
それならば、この単純な配列での実装は如何なものかと思うのです・・・・。