Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将数字放在整数的末尾(不是求和)?_Java_Integer_Character Arrays - Fatal编程技术网

Java 如何将数字放在整数的末尾(不是求和)?

Java 如何将数字放在整数的末尾(不是求和)?,java,integer,character-arrays,Java,Integer,Character Arrays,我正忙着为学校制作一个表达式树,我已经构建了制作该树的部分,并打印了算术表达式的结果。 还有这个额外的部分要完成作业,我也想完成。额外的赋值使程序能够读取表达式。 我对这一点很了解,但我不确定我是否用一种好的方式将数字放在int的末尾来编码这件事。我想解决的问题是当有这样一个表达式时… (3*(8-2))+(12/4) ... 由于12是两个分开的字符,如何从字符数组中提取12?我在代码的其余部分使用了一个字符数组,但是当然可以使用字符串来获取这两个字符 我是这样做的: // if the ne

我正忙着为学校制作一个表达式树,我已经构建了制作该树的部分,并打印了算术表达式的结果。
还有这个额外的部分要完成作业,我也想完成。额外的赋值使程序能够读取表达式。
我对这一点很了解,但我不确定我是否用一种好的方式将数字放在int的末尾来编码这件事。我想解决的问题是当有这样一个表达式时…
(3*(8-2))+(12/4)
... 由于12是两个分开的字符,如何从字符数组中提取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);
}
//如果下一个字符是数字。。。
if(Character.isDigit(表达式[i])){
//…将局部变量设置为“nextNumber”。。。
int nextNumber=0;
//…和已包含第一个数字的“a”。。。
字符串a=字符.toString(表达式[i]);
//…所以当我们检查下一个角色时。。。
for(int k=i+1;k
但它看起来太草率了。我用谷歌搜索了很长一段时间,我发现的都是这种方式,但我无法想象没有更简单或至少不那么草率的方式。你们知道更好的方法吗?还是这样

我构建的解决方案是解决表达式树问题的一种相对简单的方法,我可以做得更多,但我不想花费更多的时间,只要我能向老师展示我理解了课程。它的课程是算法,所以它不是关于学习Java的,我的意思是,我不是在要求解决老师要我解决的问题


提前谢谢你

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

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

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

number=0

number=number*10+1//我想我很清楚,但为什么是“*10”?你说的“以10为基数”是什么意思?因为通常我们用十进制数制(也称为以10为基数的位置记数法)来写数字。啊,我现在明白了,你的意思是当我想给这个数字加1时,我从
number=0开始,0实际上向左移动,1加在“开始”处,当我想加2时,0和1将向左移动,并添加2<代码>编号=0/@PeterKok请打开另一个问题。您的编辑与上面显示的代码无关。
number = 0
for each digit {
    number = number * 10 + value_of(digit)
}
number = 0
number = number * 10 + 1  // <= number = 0*10+1=1
number = number * 10 + 2  // <= number = 1*10+2=12