Java 我如何创建一个循环来计算一个特定数字在另一个特定数字中的拟合次数?

Java 我如何创建一个循环来计算一个特定数字在另一个特定数字中的拟合次数?,java,loops,if-statement,for-loop,nested-loops,Java,Loops,If Statement,For Loop,Nested Loops,我正在创建一个这样工作的程序;首先,程序读取 从键盘输入的运输工具(如卡车)的总体积,单位为立方米。接下来,程序计算卡车和卡车中可以存储的行李数量 显示此信息 我总是想用尽可能多的大袋子,也就是说我想用尽可能多的最大的袋子,然后,当他们不能再装最大的袋子时,我想储存尽可能多的中等尺寸的袋子,当他们不能再储存中等尺寸的袋子时,他们用最小尺寸的袋子来填满剩下的任何空间 这就是我试图解决这个问题的方式,但最大的问题仍然是循环或逻辑部分,我不知道如何循环这些东西,以便打印出我想要的东西 我会这样做: i

我正在创建一个这样工作的程序;首先,程序读取 从键盘输入的运输工具(如卡车)的总体积,单位为立方米。接下来,程序计算卡车和卡车中可以存储的行李数量 显示此信息

我总是想用尽可能多的大袋子,也就是说我想用尽可能多的最大的袋子,然后,当他们不能再装最大的袋子时,我想储存尽可能多的中等尺寸的袋子,当他们不能再储存中等尺寸的袋子时,他们用最小尺寸的袋子来填满剩下的任何空间

这就是我试图解决这个问题的方式,但最大的问题仍然是循环或逻辑部分,我不知道如何循环这些东西,以便打印出我想要的东西


我会这样做:

int numbBag, nummBag, numsBag;    
int remainder;

numbBag = transvol / bBag;
remainder = transvol % bBag;

nummBag = remainder / mBag;
remainder %= mBag;

numsBag = remainder / sBag;
假设交通工具没有特定的形状

如果您想要一个可用于任意数量行李的循环,您可以这样做:

const int NUM_BAGS = 3;
//put all your bag sizes here
int[] bags = {bBag, mBag, sBag, /*other bags*/};//Array of bags from largest to smallest
int[] numBags = new int[NUM_BAGS];//Number of each bag in the transport
int remainder = transVol;

for(int varA; varA < NUM_BAGS; varA++)
{
    numBags[varA] = remainder / bags[varA];
    remainder %= bags[varA];
}
const int NUM_BAGS=3;
//把你所有的包尺寸都放在这里
int[]行李={bBag、mBag、sBag、/*其他行李*/}//从最大到最小的袋子阵列
int[]numBags=新的int[NUM_BAGS]//运输中每件行李的数量
int余数=transVol;
用于(int varA;varA

bBags的数量以numBags[0]为单位,mBags的数量以numBags[1]为单位,从大到小依次排列。

这是背包问题的一个版本-如果你找到了一个好的解决方案,一定要告诉我们,全世界都在寻找@伊万诺尔斯,也许不是。在我看来,似乎只有一辆卡车,而且卡车的特征仅在于其体积(即,它没有特定的形状)。如果是真的,那么问题是卡车可以装多少个大袋子(一个整数除法),剩余部分可以装多少个中袋子(另一个除法),第二个剩余部分可以装多少个小袋子(第三个也是最后一个除法运算)。詹姆斯·拉格,你说得对。卡车没有特定的容积。体积或大小基本上是从用户输入中选择的。因此,您可以不使用循环来计算答案,就像我用三个整数分割所描述的那样:将卡车的体积除以一个大包的体积,这就是可以容纳的最大数量的大包。然后计算出剩余的空间(除法的剩余部分),然后除以一个中等袋子的体积。然后算出余数,除以一个小袋子的体积。如果这是一个家庭作业问题,你只需要一个循环,你的老师特别告诉你使用循环。在这种情况下,我担心如果我只是向你展示这个循环,我会给你太多的帮助。如果有人能在你打字的时候回头看你,给你提示,那就更好了。谢谢你的回答,但是我有每个袋子的固定尺寸。在这种情况下我能做什么?行李的体积包含在您给定的值(sBag、mBag、bBag)内。
int numbBag, nummBag, numsBag;    
int remainder;

numbBag = transvol / bBag;
remainder = transvol % bBag;

nummBag = remainder / mBag;
remainder %= mBag;

numsBag = remainder / sBag;
const int NUM_BAGS = 3;
//put all your bag sizes here
int[] bags = {bBag, mBag, sBag, /*other bags*/};//Array of bags from largest to smallest
int[] numBags = new int[NUM_BAGS];//Number of each bag in the transport
int remainder = transVol;

for(int varA; varA < NUM_BAGS; varA++)
{
    numBags[varA] = remainder / bags[varA];
    remainder %= bags[varA];
}