如何创建一个循环,可以计算特定数字在另一个特定数字中的拟合次数?

时间:2015-01-16 20:47:57

标签: java loops if-statement for-loop nested-loops

我正在创建一个像这样工作的程序;首先程序读取 距离键盘的立方米的运输工具(例如卡车)的总容积。接下来,该程序计算可以存放在卡车中的行李数量 显示此信息。

我总是希望尽可能多地使用大包,这意味着我想尽可能多地使用最大的包包,然后当它们不再适合我想存放的最大包包时,就像许多中间包一样尽可能大小的袋子,当他们不能再储存中等大小的袋子时,他们会使用最小尺寸的袋子来填充剩下的空间。

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

    package volumecalc;

import java.util.*;

public class BagObject {

    Scanner input = new Scanner(System.in);
    //volume in cubic meter
    int sBag = 10 * 10 * 30;     //Size of the smallest bag
    int mBag = 50 * 100 * 40;    //Size of the middle bag
    int bBag = 100 * 200 * 50;   //Size of the biggest bag
    int transVol;

    public void bag() {
        System.out.println("Enter the current volume of your transport: ");
        transVol = input.nextInt();

        if (transVol > bBag) {
            //Probaly here or more places, I need help
        } else if (transVol < sBag) {
            //Probaly here or more places, I need help
        }

    }

}

主要课程:

    package volumecalc;

import java.util.*;

public class VolumeCalc {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("                THIS PROGRAM WILL CALCULATE THE SPACE (IN cubic centimeter) IN TRANSPORT:\n\n");
        BagObject bo = new BagObject();
        bo.bag();

    }

}

1 个答案:

答案 0 :(得分:2)

我就是这样做的:

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];
}

bBags的数量为numBags [0],mBags为numBags [1]等,按从大到小的顺序排列。