java - 如何将数字放在 int 的末尾(而不是求和)?

标签 java integer character-arrays

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

我是这样做的:

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

但是看起来很草率。我用谷歌搜索了很长时间,我发现的只是这种方式,但我无法想象没有更简单或至少不那么马虎的方式。你们知道更好的方法还是这就是要走的路?

我构建的解决方案是解决表达式树问题的相对简单的方法,我可以进一步解决它,但我不想花更多的时间,只要我可以向老师展示我明白了教训。它的类(class)是算法,所以它并不是真正的学习Java,我的意思是我不是在要求老师要求我解决的问题的解决方案。

提前谢谢您!

最佳答案

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

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

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

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

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

关于java - 如何将数字放在 int 的末尾(而不是求和)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7585160/

相关文章:

c++ - 字符数组分配

java - 替代 Jackson @JsonSubTypes

java - 如何让 NumberFormat 使用货币但带有小数美分/便士?

在C中将整数转换为字符(根据ASCII表)

仅通过类型转换就可以完成符号/零扩展吗?

java - 在 JAVA 中查找两个不同的子字符串并打印它们之间的所有内容

java - 使用谓词作为单元测试的参数

java - 使用 ListIterator 编写插入排序

postgresql - 在 Postgresql 中加入整数列比加入 varchar 更有效?

arrays - 如何将一个字符作为 MATLAB 数组重复多次?