为什么java接受带有“+”符号的整数以及如何不接受带有“+”符号的整数输入

时间:2016-10-28 08:06:46

标签: 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)

1 个答案:

答案 0 :(得分:2)

您正在使用Scanner.nextInt()读取int:如文档中所述,这使用Integer.parseInt来读取数字;并且该方法明确声明它接受前导System.out.println(credential.refreshToken()); 符号:

  

字符串中的字符必须全部是指定基数的数字(由Character.digit(char,int)返回非负值确定),除了第一个字符可能是ASCII减号' - '( '\ u002D')表示负值或ASCII加号'+'('\ u002B')表示正值

一旦您阅读了该号码,就无法区分您输入+123的事实,因为价值没有差异。因此,在将+123转换为+之前,您已经丢失了int

要捕获此信息,您需要先阅读String,然后将 转换为String

int

这会保留String sAmount= scan.next(); nAmount = Integer.parseInt(sAmount); 中的+符号,因为没有理由将其删除。请注意,如果sAmount无法实际解析为sAmount,则会失败。