2016-10-28 5 views
-7

Javaは '+'記号で整数を受け入れ、 +記号。助けてください!事前のおかげでなぜJavaは '+'記号で整数を受け入れ、 '+'記号で整数入力を受け入れないのか

nAmount= scan.nextInt(); 
String sAmount = Integer.toString(nAmount); 
//ON THIS LINE, MY PROG SHOULD NOT ACCEPT INTEGERS WITH "+" SIGN 
if (sAmount.contains("+")) { 
    System.out.println("金額に文字が入力されています。"); 
} else if (nAmount<=0) { 
    System.out.println("金額は0円以上で入力してください。"); 
} else if (nAmount>999999) { 
    System.out.println("金額は999,999円以下で入力してください。"); 
} else nAFlag =1; 

Sample Output : 
Input > 100 (Accepted) 
Input > -100 (Not Accepted because of the constrain input is less than 0) 
Input > +100 (IT SHOULD NOT BE ACCEPTED BECAUSE IT CONTAINS A SYMBOL) 
+3

正確に何を求めていますか?あなたが意味するものの例を挙げることができますか? – ItamarG3

+2

ようこそスタックオーバーフロー! [ツアー]を見て回り、[ヘルプ]、特に[*どのように私は良い質問をしますか?](/助け/やり方) –

+0

を書く必要があります任意の文字や記号を使用せずに数字のみを受け入れるコード。しかし、 "+"記号で整数を入力すると、プログラムはそれを受け入れます。 – exceptione

答えて

2

あなたがScanner.nextInt()を使ってint型を読んでいる:ドキュメントで説明したように、これは番号を読み取るためにInteger.parseIntを使用しています。 (これは、Character.digit(CHAR、INT)は非負の値を返すかどうかによって決定されるように)文字列内の文字はすべて指定された基数の数字でなければならない

:その方法は、明示的に主要+符号を受け付けると述べ最初の文字が負の値または正の値を示すASCIIのプラス記号 '+'( '\ u002B')を示すASCIIマイナス記号 ' - '( '\ u002D')であることを除いては、

そして、その番号を読んだら、123または+123と入力したという事実を区別する方法はありません。値に違いはありません。したがって、をStringに変換する前でも、+を失ってしまいました。

これをキャプチャするには、あなたがString最初を読んで、そしてintことを変換する必要があります。それを剥ぎする理由はないので

String sAmount= scan.next(); 
nAmount = Integer.parseInt(sAmount); 

これは、sAmount+記号を保持します。 sAmountが実際にはintとして解析できない場合は失敗することに注意してください。

+0

それはうまく動作します!ありがとうございました! – exceptione

+1

@AndyTurner本当ですか?あなたの魔術師、あなた! – isnot2bad

関連する問題