Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在不转换为字符串的情况下从整数中删除第n个数字_Java_Integer_Digits - Fatal编程技术网

Java 在不转换为字符串的情况下从整数中删除第n个数字

Java 在不转换为字符串的情况下从整数中删除第n个数字,java,integer,digits,Java,Integer,Digits,假设我在java中有一个整数,987654321。我希望能够删除第三位和第四位,这样我就可以用java获得9876521 我知道我可以通过转换成一个字符串,然后获取一个子字符串来实现这一点,但是有没有一种方法可以不转换成字符串来实现这一点呢?%和/或是您的朋友!使用模和除法,我们可以得到我们想要的数 我们使用模来消除最高有效数字,使用除法来消除最低有效数字。我们可以使用除法,因为余数会被截断 然后我们把这两次行动中得到的两部分放在一起。然而,我们需要将从除法中得到的数字移位,以便为最低有效数字留

假设我在java中有一个整数,
987654321
。我希望能够删除第三位和第四位,这样我就可以用java获得
9876521


我知道我可以通过转换成一个字符串,然后获取一个子字符串来实现这一点,但是有没有一种方法可以不转换成字符串来实现这一点呢?

%和/或是您的朋友!使用模和除法,我们可以得到我们想要的数

我们使用模来消除最高有效数字,使用除法来消除最低有效数字。我们可以使用除法,因为余数会被截断

然后我们把这两次行动中得到的两部分放在一起。然而,我们需要将从除法中得到的数字移位,以便为最低有效数字留出空间

以987654321/10000为例,这将为您提供98765(我们称之为x)

取987654321%100,这将给你21(我们称之为y)

x*100+y=9876521

更一般地说,如果要从数字n中删除a到bth位(其中a
n%10^(a-1)+(n/10^(b))*10^(a-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;
}

这个系列是否像要删除的第3和第4个字段一样始终是连续的?是的,连续是fineSmart,但如果您解释了如何获取任何给定数字和我们想要清除的任何位置的调制和除法值,则会更好。
System.out.println(RemoveMultiplePositions(987654321, new int[] { 3, 4 }));