更简单的方法来替换Int数组中的数字?

时间:2015-09-13 21:08:06

标签: java

如果我有两个整数 目标 - 将x1的最后3位替换为x2

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

问题 - 有三个if条件是否有必要,或者有更简单的方法吗?

1 个答案:

答案 0 :(得分:1)

代码中没有int数组。

用正整数的最后三位替换正整数的最后三位只需要一些数学运算:

x1 = (x1/1000)*1000 + x2%1000;

(x1/1000)*1000x1的后3位数字归零,因为/在应用于整数类型时会执行整数除法。
x2%1000仅产生x2的最后3位数 总和就是你想要的结果。

如果涉及负数,事情会变得复杂一些。

如果我们利用问题表明x2不能大于999的事实,我们可以将代码简化为:

x1 = (x1/1000)*1000 + x2;