根据用户选择选择表单

时间:2013-03-22 17:26:15

标签: java

用户最多可以有20辆车。我有5个静态表格。基于用户选择我想合并pdfs

1.pdf - 1 veh,2.pdf - 2 veh,3.pdf - 3 veh,4.pdf - 4 veh,5.df - 5 veh

如果用户有超过5辆车,如6辆车,那么每个表格应该容纳5.pdf + 1.pdf而不是其他组合,如3 + 3或2 + 3 + 1等。 20辆车5 + 5 + 5 + 5,13辆5 + 5 + 3,7辆5 + 2,18辆车5 + 5 + 5 + 3,3 veh 3.有没有人帮我挑选逻辑表单用户应选择合并而不是写入20 if循环。

2 个答案:

答案 0 :(得分:1)

首先要注意的是,一组表单将是单个表单1-5,或者是一些5表单和单个表单1-5。没有其他组合。它基本上就像你在计算base-5中的表格一样。

首先,根据需要处理尽可能多的5.pdf表单。如果表单的数量大于5,您将需要添加至少1个.pdf文件。如果表单的数量大于10,您将需要添加至少2个.pdf文件。除了其他方式之外,您可以通过不断添加5.pdf表单来实现,直到您的计数小于5。

在伪代码中,您可以执行以下操作:

List forms = new ArrayList();
int count = <number of vehicles>

while count > 0 {
   if ( count >= 5 ) {
      forms.add( "5.pdf" );
      count = count - 5;
   } else {
      forms.add( "" + count + ".pdf" );
      count = 0;
   }
}

<forms now contains the list of all forms you need>

或者,如果您愿意,可以按照以下方式简化:

int numberOfFives = (formsCount / 5); // Integer division, so if formsCount = 4, numberOfFives = 0
int remainingForm = (formsCount % 5); // Remainder after division by 5

然后您将numberOfFives 5.pdf表单和单个remainingForm。pdf表单添加到您的连续PDF中。

答案 1 :(得分:0)

看起来你想要重复减去小于我们等于目标的最大值。例如:

8: greatest is 5, 8-5=3
3: greatest is 3, 3-3=0, we're finished
8=5+3