2012-12-03 131 views
0

我在这里遇到了一个很大的问题。基本上我要做的就是让用户输入一个数字......然后该程序将获取该数字,如果数据为负数或正数,则读取该数字。如果为负值,则将先前的假否定为真,然后继续。然后它再次读取数字,检查前导零,如果有任何删除它们。然后它接受剩下的内容并检查字符串是否大于最大字符数量(如果它是循环来计算空格的数量),同时计算空格也确保它们是数字。如果字符串的长度超出字符程序停止检查的允许量更大,打印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

返回值不应该出现两次。 –

+0

这是什么意思“如果它是循环来计算空间,而它计数的空间,它也确保他们是数字”......空格是数字? – xagyg

回答

0

只需使用Integer.parseInt(snum)

0

你的主要问题是,您使用的是字符串比较来比较数字。另外,既然你已经知道这个数字是正数,所以把它和minInt比较并没有多少意义。最后,你对maxInt有错误的值。

+0

那么如果他们输入一个负数不会我仍然需要它? –

+0

您已将数字正面的减号切掉。 –

0
final String maxInt = "2147483648"; 

MAX_INT2147483647

其次,不要使用字符串比较来比较数字。像这样使用它:

​​
1

您正在比较字符串,它与比较数字的方式不起作用。例如,"10" < "2"因为'1' < '2'这意味着"-1" < "-2147483648""3">"2147483647"

这很难建议你应该做的,而不是因为它为什么这样做,你有一半的代码不是很清楚,我例如你能说你的代码是不同的吗?

try { 
    return Integer.parseInt(s); 
} catch (NumberFormatException ignored) { 
    return 0; 
}