为什么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)
答案 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
,则会失败。