プロが教えるわが家の防犯対策術!

はじめまして、java初心者です。

"半角の数字1~3を入力したら、その値(1~3)を返す"プログラムを組みたいのですが、
全角の数字1~3を入力しても値が返ってしまいます。

全角で入力された場合、エラー表示を出したいのですが、
どういうプログラムを組めばいいのでしょうか?
お手数ですが教えてください。<(__)>

A 回答 (3件)

> 全角の数字1~3を入力しても値が返ってしまいます。


どげなコードね?
(ふつうに書けば、それはあり得ないが…。)
    • good
    • 0
この回答へのお礼

返事ありがとうございます。

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

お礼日時:2008/05/26 13:05

入力された文字長を取得すればよいのではないのでしょうか?


半角1byte、全角2byteなので、これで条件文を加えればよいと思いますが・・・。
    • good
    • 0
この回答へのお礼

返事ありがとうございます<(__)>

なるほどですね、byteで判断させればいいのですね。
しかしながら超が付くほどjava初心者なもので、
ソースが思いつきません。。

お礼日時:2008/05/26 12:59

Javaプログラムの上では文字はすべて16ビットUnicodeなので、バイト数での判定は(簡単には)できません。


ふつうなら、'1'と'1'の判定区別は何も苦労なくできるはずなので、質問者がどんなコードで「全角の数字1~3を入力しても値が返ってしまいます」になるのか、それを知りたいです。
    • good
    • 0
この回答へのお礼

返事ありがとうございます。

ソースは下記の通りです。よろしくお願いいたします<(__)>

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;
}
}
}

お礼日時:2008/05/26 13:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!