2016-10-28 16 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

歡迎來到Stack Overflow!請[參觀],環顧四周,並仔細閱讀[幫助],尤其是[*我如何提出一個好問題?](/ help/how-to-ask) –

+0

我需要寫一個只接受數字的代碼,沒有任何字符或符號。但是當我用「+」符號輸入整數時,程序接受它。 – exceptione

回答

2

您正在閱讀使用Scanner.nextInt()一個int:如文檔中描述的那樣,這款採用Integer.parseInt閱讀次數;和方法明確地說,它接受一個主導+符號:

字符串中的字符必須是指定基數的數字(由Character.digit(炭,INT)是否返回一個非負值確定) ,除了第一個字符可能是ASCII減號' - '('\ u002D')以指示負值或ASCII加號'+'('\ u002B')以指示正值

一旦你讀到了這個數字,就沒有辦法區分你輸入123+123的事實,因爲在價值上沒有差別。所以,即使在您將int轉換爲String之前,您已經丟失了+

爲了抓住這一點,你需要閱讀String第一,並轉換int

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

這將保留+登錄sAmount,因爲沒有理由剝奪它拿走。請注意,如果sAmount實際上不能被解析爲int,它將會失敗。

+0

好吧,它的作品!謝謝! – exceptione

+1

@AndyTurner真的嗎?你是個魔術師,男人! – isnot2bad

相關問題