2012-12-03 181 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; 
}