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

相关问题