【问题标题】:How to print values in table using two different length of array如何使用两个不同长度的数组在表中打印值
【发布时间】:2018-11-01 16:45:09
【问题描述】:

我想创建一个包含两个不同维度的不同数组的表,但执行后它没有给我正确的输出。

我有以下代码:

String rowHeadingkeys[] = new String[] {"heading1","heading2","heading3","heading4","heading5","heading6","heading7","heading8"};
String rowValuekeys[] = new String[] {"Text1","Text2","Text3","Text4","Text5",
                                    "Text6","Text7","Text8","Text9","Text10",
                                    "Text11","Text12","Text13","Text14","Text15",
                                    "Text16","Text17","Text18","Text19","Text20",
                                    "Text21","Text22","Text23","Text24"};

    for(int i = 0;i<rowHeadingkeys.length;i++) {

        if(rowHeadingkeys!=null) {

            patientMonitoringTable.addCell(createCell(rowHeadingkeys[i],
                    PDFUtil.BOLD_FONT,1,Element.ALIGN_LEFT));

            for(int j = 0;j<rowValuekeys.length/rowHeadingkeys.length;j++) {

                patientMonitoringTable.addCell(createCell(svo.getFields().get(rowValuekeys[j]).getValue(),
                        PDFUtil.FONT,1,Element.ALIGN_LEFT));
            }

        }
}

我想让它像下面这样:

| heading1 | Text1  | Text2  | Text3  |    
| heading2 | Text4  | Text5  | Text6  |    
| heading3 | Text7  | Text8  | Text9  |    
| heading4 | Text10 | Text12 | Text13 |    
| heading5 | Text14 | Text15 | Text16 |    
| heading6 | Text17 | Text18 | Text19 |    
| heading7 | Text20 | Text21 | Text22 |    
| heading8 | Text23 | Text24 | Text24 |

如何做到这一点?

【问题讨论】:

    标签: java arrays tabular


    【解决方案1】:

    我猜你得到的是 Text1 |文本2 |文本3 |每个标题。

    您不应该在每个循环中都指定 j = 0。在 for 循环之外初始化一个 int index=0,内部 for 循环应该如下所示。

    for(int j = index; j<index + (rowValuekeys.length/rowHeadingkeys.length);j++){
    
    }
    index+=rowValuekeys.length/rowHeadingkeys.length;
    

    编辑:

    更好的解决方案是:

    int innerIndex = 0;
    for(int i = 0;i<rowHeadingkeys.length;i++) {
    
        if(rowHeadingkeys!=null) {
    
            patientMonitoringTable.addCell(createCell(rowHeadingkeys[i],
                    PDFUtil.BOLD_FONT,1,Element.ALIGN_LEFT));
    
            for(int j = 0;j<rowValuekeys.length/rowHeadingkeys.length;j++) {
          if(innerIndex < rowValuekeys.length)
                patientMonitoringTable.addCell(createCell(svo.getFields().get(rowValuekeys[innerIndex]).getValue(),
                        PDFUtil.FONT,1,Element.ALIGN_LEFT));
               innerIndex++;
            }
    
        }
    

    }

    【讨论】:

      【解决方案2】:

      如果您希望第二个列表中的 3 个项目用于第一个列表中的每个项目:

      for(int i = 0; i < rowHeadingkeys.length;i++) {
      
          if(rowHeadingkeys!=null) {
      
              patientMonitoringTable.addCell(createCell(rowHeadingkeys[i],
                      PDFUtil.BOLD_FONT,1,Element.ALIGN_LEFT));
      
              for(int j = 0; j < 3; j++) {
      
                  patientMonitoringTable.addCell(createCell(svo.getFields().get(rowValuekeys[3 * i + j]).getValue(),
                          PDFUtil.FONT,1,Element.ALIGN_LEFT));
              }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-19
        • 2019-12-05
        • 2015-06-17
        • 1970-01-01
        • 2020-01-13
        相关资源
        最近更新 更多