如果有数据,只从下往上打印行

时间:2016-05-05 19:38:24

标签: java

您将如何解决以下逻辑:

我有带有单元格的pdf文件:

addressLine1
addressLine2
addressLine3
addressLine4
addressLine5
cityStateZip

所有人都有吸气剂。 有时,所有字段都有数据,有时却没有。

为了使它漂亮,我希望它们组合在一起,即:

1261 Graeber St (address4)
Bldg 2313 Rm 24 (address5)
Pensacola FL 32508 (cityStateZip)

如果addressLine1是唯一存在的地址,则需要将其中一些地址视为空白。

1261 Graeber St (address5)
Pensacola FL 32508 (cityStateZip)

此处,由于address2address3address4为空,我们将address1移至pdf单元格address5

我的代码现在打印:

1261 Graeber St       (address1)
                      (address2)
                      (address3)
                      (address4)
                      (address5)
Pensacola FL 32508    (cityStateZip)

以下是代码:

FdfInput.SetValue("addressLine1", getAddressLine1() );
FdfInput.SetValue("addressLine2", getAddressLine2() );
FdfInput.SetValue("addressLine3", getAddressLine3() );
FdfInput.SetValue("addressLine4", getAddressLine4() );
FdfInput.SetValue("addressLine5", getAddressLine5() );
FdfInput.SetValue("addressLine6", getCityStateZip() );

左边的图片是它现在的样子,我希望它像右边的图片。

enter image description here

这是LinkedList.insertLast()的好候选人吗?

2 个答案:

答案 0 :(得分:1)

此:

if(!getAddressLine1().isEmpty())
    FdfInput.SetValue("addressLine1", getAddressLine1());

if(!getAddressLine2().isEmpty())
    FdfInput.SetValue("addressLine2", getAddressLine2());

if(!getAddressLine3().isEmpty())
    FdfInput.SetValue("addressLine3", getAddressLine3());

if(!getAddressLine4().isEmpty())
    FdfInput.SetValue("addressLine4", getAddressLine4());

if(!getAddressLine5().isEmpty())
    FdfInput.SetValue("addressLine5", getAddressLine5());

if(!getCityStateZip().isEmpty())
    FdfInput.SetValue("cityStateZip", getCityStateZip());

换句话说,如果要添加到行中的数据,请执行此操作,否则,完全跳过它。例如,让我们说除了address3,address5和cityStateZip之外,所有字段都是空的。

// The output will not look like this:    


addressLine3

addressLine5
cityStateZip

相反,它看起来像:

addressLine3
addressLine5
cityStateZip

答案 1 :(得分:1)

我通过在数组列表中存储字符串并在名称上递减计数器来解决它:

List<String> addrLines = new ArrayList<String>();

if(!getCityStateZip().isEmpty())
    addrLines.add(getTomaCityStateZip());

if(!getAddressLine5().isEmpty())
    addrLines.add(getAddressLine5());

if(!getAddressLine4().isEmpty())
    addrLines.add(getAddressLine4());

if(!getAddressLine3().isEmpty())
    addrLines.add(getAddressLine3());

if(!getAddressLine2().isEmpty())
    addrLines.add(getAddressLine2());

if(!getAddressLine1().isEmpty())
    addrLines.add(getAddressLine1());

for (int i = addrLines.size(); i > 0; --i)
{
    int line = addrLines.size() - i;
    String field = String.format("addressLine%d", 6 - line);
    FdfInput.SetValue(field, addrLines.get(line));
}