我在这里遇到了很大的问题。基本上我要做的就是让用户输入一个数字...然后程序取数字,读取是负数还是正数。如果为负,则将先前的假否定设置为true并继续。然后再次读取该数字,检查前导零,如果有任何删除它们。然后它接受剩下的东西并检查字符串是否大于字符的最大字符数,如果它是循环计数空格,而它计算空格它也确保它们是数字。如果字符串大于允许的字符数,则程序停止检查并打印0
我的问题是,即使字符串长度是有效长度
,它也会一直跳到0输出这就是我所拥有的。
String snum;
System.out.print("Please enter a number here : ");
snum = console.next();
System.out.println(getIntnum(" The number entered was: "+snum));
其他通用的东西
final String maxInt = "2147483648";
final String minInt = "-2147483648";
boolean negval = false;
int n;
int count;
int num = 1;
int value;
if(snum.charAt(0) == '-' || snum.charAt(0) == '+')
{
if(snum.charAt(0) == '-')
{
negval = true;
}
else
{
snum = snum.substring(1, snum.length());
}
}
while (snum.charAt(0) == '0')
{
snum = snum.substring(1, snum.length());
}
n = snum.length( );
if (n < 10)
{
count = 0;
if (count < n)
{
if (Character.isDigit(snum.charAt(count)))
count++;
}
}
else
{
num = 0;
}
if(maxInt.compareTo(snum) >= 0 && minInt.compareTo(snum) <= 0)
{
num = Integer.parseInt(snum);
}
if(negval == true)
{
num = num * -1;
}
value = num;
return value;
}
}
答案 0 :(得分:1)
您正在比较与比较数字的工作方式不同的字符串。例如,"10"
&lt; "2"
因为'1'
&lt; '2'
这意味着"-1"
&lt; "-2147483648"
和"3"
&gt; "2147483647"
很难说明你应该做什么,因为我不清楚你为什么要做一半你所拥有的代码,例如你能说出你的代码与
有什么不同吗?try {
return Integer.parseInt(s);
} catch (NumberFormatException ignored) {
return 0;
}
答案 1 :(得分:0)
只需使用Integer.parseInt(snum)
答案 2 :(得分:0)
您的主要问题是您使用字符串比较来比较数字。此外,由于您已经知道这个数字是正数,因此将它与minInt进行比较并没有什么意义。最后,你的maxInt值不正确。
答案 3 :(得分:0)
final String maxInt = "2147483648";
MAX_INT
是2147483647
。
其次,不要使用字符串比较来比较数字。像这样使用它:
if (Integer.parseInt(maxInt) >= Integer.parseInt(snum)) {
num = Integer.parseInt(snum);
}