2012-11-26 49 views
1

我想建立一個計算器沒有任何運營商,涉及到本身我試圖解決(比較運營商和循環與運營商都很好)。 問題是,Eclipse是顯示該控制檯:Java - 沒有顯示任何錯誤沒有運營商沒有運行的計算器

Exception in thread "main" java.lang.NumberFormatException: For input string: "" 
at java.lang.NumberFormatException.forInputString(Unknown Source) 
at java.lang.Integer.parseInt(Unknown Source) 
at java.lang.Integer.parseInt(Unknown Source) 
at Calculator.addOne(Calculator.java:22) 
at Calculator.add(Calculator.java:78) 
at Program.main(Program.java:8) 

這是我的代碼 - 計算器類:http://pastebin.com/jLGe6atB

我的main()方法:

public class Program { 
public static void main(String[] args) { 
    Calculator calculator1 = new Calculator(8135, 6); 
    calculator1.add(); 
} 
} 

誰能告訴我,我有什麼問題? (請不要問我爲什麼要這樣做,這只是爲了好玩)

謝謝你,併爲你的時間感到抱歉。

請求:「後的add()和addOne()請在這裏:

 public int addOne(int DigitArray) 
    { 
      String stringNum1 = Integer.toString(DigitArray); 
      String[] arrNum1 = stringNum1.split(""); 
      int[] newArrNum1 = new int[arrNum1.length]; 
       for (int i = 0; i < arrNum1.length; i++) { 
        newArrNum1[i] = Integer.parseInt(arrNum1[i]); 
       } 
      int lastDigit = newArrNum1[newArrNum1.length-1]; 
      switch(lastDigit) 
      { 
      case 0: 
        lastDigit = 1; 
        System.out.println(lastDigit); 
        return lastDigit; 
      case 1: 
        lastDigit = 2; 
        System.out.println(lastDigit); 
        return lastDigit; 
      case 2: 
        lastDigit = 3; 
        System.out.println(lastDigit); 
        return lastDigit; 
      case 3: 
        lastDigit = 4; 
        System.out.println(lastDigit); 
        return lastDigit; 
      case 4: 
        lastDigit = 5; 
        System.out.println(lastDigit); 
        return lastDigit; 
      case 5: 
        lastDigit = 6; 
        System.out.println(lastDigit); 
        return lastDigit; 
      case 6: 
        lastDigit = 7; 
        System.out.println(lastDigit); 
        return lastDigit; 
      case 7: 
        lastDigit = 8; 
        System.out.println(lastDigit); 
        return lastDigit; 
      case 8: 
        lastDigit = 9; 
        System.out.println(lastDigit); 
        return lastDigit; 
      case 9: 
        lastDigit = 0; 
        updateNumberPlus(lastDigit, arrNum1, newArrNum1); 
        System.out.println(lastDigit); 
        return lastDigit; 
      default: 
        return lastDigit; 
      } 
    } 
    public int add() 
    { 
      int i = 0; 
      while(i <= num2) 
      { 
        i++; 
        this.addOne(num1); 
        if(i == num2) 
        { 
          result = 0; 
          System.out.print(result); 
          return result; 
        } 
      } 
      return result; 
    } 

回答

4

當你做一個String.split(""),你會得到一個空String元素爲您Array的第一個和最後一個元素

然後迭代數組,在每個元素上調用Integer.parseInt(),在空字符串元素上失敗。

簡單的破解就是將您的for循環更改爲loo喜歡;

for(int i = 1; i < arrNum1.length - 1; i++) { 

這是一個有點難看,雖然:P

+0

感謝,還剩7分剔它作爲一個答案。有效。 – shohamh

+0

沒問題。你可能會考慮使用'String.charAt(0)',然後'String.substring(1)'查詢字符串中的每個字符,這對我來說似乎是一個稍微乾淨一點的方法。 – lynks