Java - 没有运算符的计算器不显示任何错误

时间:2012-11-26 16:28:58

标签: java

我正在尝试构建一个没有任何与我尝试解决的操作本身相关的运算符的计算器(比较运算符和带运算符的循环很好)。 问题是,Eclipse在控制台中显示了这个:

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;
    }

1 个答案:

答案 0 :(得分:4)

当您执行String.split("")时,您将获得一个空的String元素作为Array的第一个和最后一个元素。

然后迭代数组,在每个元素上调用Integer.parseInt(),这对空字符串元素失败。

一个简单的黑客就是将你的for循环改为:

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

虽然有点难看:P