假设我在java中有这个整数,987654321
。我希望能够删除,比如说第三和第四位,这样我就可以在java中获得9876521
。
我知道我可以通过转换为字符串然后获取子字符串来实现这一点,但有没有办法在不转换为字符串的情况下执行此操作?
答案 0 :(得分:7)
%和/是你的朋友!使用模数和除法,我们可以得到我们想要的数字。
我们使用模数来消除最高有效数字,并使用除法来消除最低有效数字。我们可以使用除法,因为余数会被截断。
然后我们将这两个操作中的两个部分放在一起。但是,我们需要将从分区中获得的数字移位到最低有效位数的空间。
拿987654321/10000,这会给你98765(让我们称之为x)
取987654321%100,这将给你21(让我们打电话给你)
x * 100 + y = 9876521。
更一般地说,如果你想从数字n中删除一个到第b个数字(其中a< b),
n%10 ^(a-1)+((n / 10 ^(b))* 10 ^(a-1))
答案 1 :(得分:1)
这将只删除一位数字:
public static int RemoveNthPosition(int input, int position) {
int leftDivider = (int) Math.pow(10.0, position);
int rightDivider = (int) Math.pow(10.0, position - 1);
int leftSide = input / leftDivider;
int rightSide = input % rightDivider;
return leftSide * rightDivider + rightSide;
}
同时删除多个:
public static int RemoveMultiplePositions(int input, int[] positions) {
Arrays.sort(positions);
int result = input;
for (int count = 0; count < positions.length; count++) {
result = RemoveNthPosition(result, positions[count] - count);
}
return result;
}
在你的情况下,它将是:
System.out.println(RemoveMultiplePositions(987654321, new int[] { 3, 4 }));