如果我有两个整数 目标 - 将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条件是否有必要,或者有更简单的方法吗?
答案 0 :(得分:1)
代码中没有int数组。
用正整数的最后三位替换正整数的最后三位只需要一些数学运算:
x1 = (x1/1000)*1000 + x2%1000;
(x1/1000)*1000
将x1
的后3位数字归零,因为/在应用于整数类型时会执行整数除法。
x2%1000仅产生x2
的最后3位数
总和就是你想要的结果。
如果涉及负数,事情会变得复杂一些。
如果我们利用问题表明x2
不能大于999的事实,我们可以将代码简化为:
x1 = (x1/1000)*1000 + x2;