如果我有两个整数
目标-用x2替换x1的后3位数字

int x1 = 1000;
int x2 = 3; //x2 can't be larger than 999

char[] digits = String.valueOf(x1).toCharArray();
char[] digits2 = String.valueOf(x2).toCharArray();

if(digits2.length == 3) {
 replace digits[1],[2],[3] by digits[0,1,2]
}
if(digits2.length == 2) {
     replace digits[2,3] by digits[0,1] and replace digits[1] by 0
}
if(digits.length == 1) {
     replace digits[3] by digits[0] and digits[1,2,] by 0
}

x1 = Integer.parseInt(new String(digits));

问题-如果有条件的话,是否需要三个条件?或者是否有更简单的方法来做到这一点?

最佳答案

您的代码中没有int数组。

用正整数的后三位代替正整数的后三位只需要一点数学即可:

x1 = (x1/1000)*1000 + x2%1000;
(x1/1000)*1000x1的后三位置零,因为/在应用于整数类型时会进行整数除法。
x2%1000仅导致x2的最后3位数字。
总和就是您想要的结果。

如果涉及负数,事情会变得更加复杂。

如果我们利用问题指出x2不能大于999的事实,可以将代码简化为:
x1 = (x1/1000)*1000 + x2;

关于java - 从Int数组替换数字的更简单方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32554556/

10-14 08:49