• 締切済み

全角・半角の識別判断の方法を教えてください

はじめまして、java初心者です。 "半角の数字1~3を入力したら、その値(1~3)を返す"プログラムを組みたいのですが、 全角の数字1~3を入力しても値が返ってしまいます。 全角で入力された場合、エラー表示を出したいのですが、 どういうプログラムを組めばいいのでしょうか? お手数ですが教えてください。<(__)>

みんなの回答

  • _ranco_
  • ベストアンサー率58% (126/214)
回答No.3

Javaプログラムの上では文字はすべて16ビットUnicodeなので、バイト数での判定は(簡単には)できません。 ふつうなら、'1'と'1'の判定区別は何も苦労なくできるはずなので、質問者がどんなコードで「全角の数字1~3を入力しても値が返ってしまいます」になるのか、それを知りたいです。

lucky1995
質問者

お礼

返事ありがとうございます。 ソースは下記の通りです。よろしくお願いいたします<(__)> 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; } } }

  • marohei
  • ベストアンサー率22% (8/36)
回答No.2

入力された文字長を取得すればよいのではないのでしょうか? 半角1byte、全角2byteなので、これで条件文を加えればよいと思いますが・・・。

lucky1995
質問者

お礼

返事ありがとうございます<(__)> なるほどですね、byteで判断させればいいのですね。 しかしながら超が付くほどjava初心者なもので、 ソースが思いつきません。。

  • _ranco_
  • ベストアンサー率58% (126/214)
回答No.1

> 全角の数字1~3を入力しても値が返ってしまいます。 どげなコードね? (ふつうに書けば、それはあり得ないが…。)

lucky1995
質問者

お礼

返事ありがとうございます。 入力された値をIntegerで整数化し、 もし整数化された値が" 1 or 2 or 3 "なら、 その数値(1~3)をreturnで返せというif文で作った感じなのですが、 全角でも認識してしまいます。。

関連するQ&A