首页 > 解决方案 > 将一个数字分成类似大小的块

问题描述

我需要将一个数字分成类似大小的块。我有两个变量,分别是所需的单独块的数量和数量。

例如,如果我想将 120 分成 5 个块,一个好的输出可能是:0-24、25-49、50-74、75-99、100-120。

块的大小不需要完全相同,如果它们相似就可以,但它们需要完全分开,即两个块中不能有一个数字。

我已经检查了其他类似的答案,它们不起作用,因为它们不是完全分开的。

这是我的 Java 代码:

    int maxIndex = 10;
    int numberOfChunks= 5;
    int chunkSize =new Double( Math.floor( ((double)maxIndex) / numberOfChunks)).intValue();

    int counter=0;
    for (int i=0; i<numberOfChunks;i++) {
        int min = counter;
        int max = counter+chunkSize;
        if (i==numberOfChunks-1) max=maxIndex;
        counter+=chunkSize+1;
        System.out.println(min + " - " + max);

    }

由于那个“+1”,此代码不适用于小数字。错误输出的一个例子是:

0 - 2

3 - 5

6 - 8

9 - 11

12 - 10

有任何想法吗?

标签: javamath

解决方案


假设我正确阅读了您的问题,并且有效的块列表将是 {0-1, 2-3, 4-5, 6-7, 8-10},我认为您可以通过一些小的修改到达那里. 就像是:

int maxIndex = 10;
int numberOfChunks= 5;
int chunkSize =new Double( Math.floor( ((double)maxIndex) / numberOfChunks)).intValue();

int counter = 0;
for (int i = 0; i < numberOfChunks; i++) {
    int min = counter;
    int max = counter + chunkSize - 1;
    if (i == numberOfChunks - 1) {
        max = maxIndex;
    }
    counter += chunkSize;
    System.out.println(min + " - " + max);

}

推荐阅读