我正在创建一个像这样工作的程序;首先程序读取 距离键盘的立方米的运输工具(例如卡车)的总容积。接下来,该程序计算可以存放在卡车中的行李数量 显示此信息。
我总是希望尽可能多地使用大包,这意味着我想尽可能多地使用最大的包包,然后当它们不再适合我想存放的最大包包时,就像许多中间包一样尽可能大小的袋子,当他们不能再储存中等大小的袋子时,他们会使用最小尺寸的袋子来填充剩下的空间。
这就是我试图解决这个问题的方法,但最大的问题仍然存在于循环或逻辑部分,我不知道如何循环这些东西以便打印出我想要的东西。
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();
}
}
答案 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]等,按从大到小的顺序排列。