- 締切済み
全角・半角の識別判断の方法を教えてください
はじめまして、java初心者です。 "半角の数字1~3を入力したら、その値(1~3)を返す"プログラムを組みたいのですが、 全角の数字1~3を入力しても値が返ってしまいます。 全角で入力された場合、エラー表示を出したいのですが、 どういうプログラムを組めばいいのでしょうか? お手数ですが教えてください。<(__)>
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- _ranco_
- ベストアンサー率58% (126/214)
回答No.3
Javaプログラムの上では文字はすべて16ビットUnicodeなので、バイト数での判定は(簡単には)できません。 ふつうなら、'1'と'1'の判定区別は何も苦労なくできるはずなので、質問者がどんなコードで「全角の数字1~3を入力しても値が返ってしまいます」になるのか、それを知りたいです。
- marohei
- ベストアンサー率22% (8/36)
回答No.2
入力された文字長を取得すればよいのではないのでしょうか? 半角1byte、全角2byteなので、これで条件文を加えればよいと思いますが・・・。
質問者
お礼
返事ありがとうございます<(__)> なるほどですね、byteで判断させればいいのですね。 しかしながら超が付くほどjava初心者なもので、 ソースが思いつきません。。
- _ranco_
- ベストアンサー率58% (126/214)
回答No.1
> 全角の数字1~3を入力しても値が返ってしまいます。 どげなコードね? (ふつうに書けば、それはあり得ないが…。)
質問者
お礼
返事ありがとうございます。 入力された値をIntegerで整数化し、 もし整数化された値が" 1 or 2 or 3 "なら、 その数値(1~3)をreturnで返せというif文で作った感じなのですが、 全角でも認識してしまいます。。
お礼
返事ありがとうございます。 ソースは下記の通りです。よろしくお願いいたします<(__)> public class IniMenu { public int sentaku() throws IOException { int commandReturn = 0; int commandInput = 0; BufferedReader commandNo = new BufferedReader(new InputStreamReader(System.in)); String commandString = commandNo.readLine(); try { commandInput = Integer.parseInt(commandString); } catch (Exception e) {} if (commandInput == 1 || commandInput == 2 || commandInput == 3) { commandReturn = commandInput; break; } } }