java - 将一个数字分成类似大小的块
问题描述
我需要将一个数字分成类似大小的块。我有两个变量,分别是所需的单独块的数量和数量。
例如,如果我想将 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
有任何想法吗?
解决方案
假设我正确阅读了您的问题,并且有效的块列表将是 {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);
}
推荐阅读
- macos - macOS Mojave – sane-backends “libusb not available” 编辑:设备未配置
- c# - 使用 Find in Awake 缓存脚本引用,在 Start 中不起作用
- android - 如何在 JsonArray 中存储多行?
- python - 无法使用 pip 安装 blist
- c# - 当我提取元素时,c# List 的数组是否被移动?
- java - Map<> 中 entrySet() 上的 add() 方法
- python - 如何在Python中计算给定语料库的复数和单数数量
- c++11 - 类内初始化器到底是什么?
- php - WooCommerce 自定义字段 PHP 7 工作 PHP 7.1 和 7.2 不工作
- android - 向下滚动时 RecyclerView 列表消失了