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



如果我有两个int型目标-用x2替换x1的最后三位

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

Question -是否有必要使用三个if条件,或者是否有更简单的方法?

代码中没有int数组。

用一个正整数的最后三位数字代替一个正整数的最后三位数字只需要一点数学运算:

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

(x1/1000)*1000x1的后3位取零,因为/对整型进行整除。
x2%1000只得到x2的最后3位。
和就是你想要的结果。

如果涉及到负数,事情会变得有点复杂。

如果我们利用问题陈述x2不能大于999这一事实,我们可以将代码简化为:

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

最新更新