如何在int的末尾放置数字(不是求和)?

时间:2011-09-28 14:52:36

标签: java integer character-arrays

我正忙着为学校制作一个表达式树,我已经构建了正在制作树的部分,并且打印算术表达式的结果也有效。
还有这个额外的部分来完成任务,我也想做那个工作。额外的任务是使程序能够读取表达式 我很喜欢这个,但是我不确定我是否通过在一个好的方式将数字放在int的末尾来编码这个东西。我试图解决的问题是当有这样的表达式时......
(3 *(8-2))+(12/4)
...我如何获得12个字符数组,因为它们是两个不同的字符?我在其余代码中使用了一组字符,但当然可以使用String来获取这两个字符。

我是这样做的:

// if the next character is a digit...
if (Character.isDigit(expression[i])) {
    // ... make local variables 'nextNumber'...
    int nextNumber = 0;
    // ... and 'a' which already contains this first digit...
    String a = Character.toString(expression[i]);
    // ... so when we check for the next character... 
    for (int k = i+1; k < expression.length; k++) {
        // ... wether it is a digit,...
        if (Character.isDigit(expression[k])) {
            // ... we can add that digit to 'a',...
            a = a + Character.toString(expression[k]);
        }
        // ... and if it is not a digit...
        else if (!Character.isDigit(expression[k])) {
            // ... we will exit the for loop.
            break;
        }
    }
    // now we have to change the String to an integer...
    nextNumber = Integer.getInteger(a);
    // ... and then we are sure we have the whole number as it was ment to be
    // in the given expression
    return new ET(nextNumber);
}

但它看起来很草率。我搜索了很长一段时间与谷歌,我发现的只是这样,但我无法想象没有更容易或至少不那么草率的方式。你们知道更好的方式还是这样的方式?

我构建的解决方案是解决表达式树问题的一种相对简单的方法,我可以更多地工作但我不想花费更多的时间而不是需要,只要我能告诉老师那个我理解了这些教训。它的课程是Algorithmics所以它并不是真正学习Java,我的意思是我不是要求老师让我解决的问题的解决方案。

提前谢谢!

1 个答案:

答案 0 :(得分:2)

您可以逐位建立数字(伪代码):

number = 0
for each digit {
    number = number * 10 + value_of(digit)
}

这将产生number作为基数10中数字串(从左到右)的值。

在您的情况下:digits = (1,2)

number = 0
number = number * 10 + 1  // <= number = 0*10+1=1
number = number * 10 + 2  // <= number = 1*10+2=12