Java 如何使用数组验证另一个数组中的元素长度?

Java 如何使用数组验证另一个数组中的元素长度?,java,arrays,Java,Arrays,我正在尝试创建一个文件验证程序,因此,导入一个csv文件,检查内容,检查每个字段是否为空,然后检查每个字段的长度。如果它大于指定的值(每个字段不同),那么我希望将其显示为不同的颜色,这样我就可以轻松地识别任何不适合我的数据库的字段 我设法将文件读入数组,检查它是否为null,并根据静态值检查字段长度。我有另一个包含字段大小的数组,但我似乎无法获得交叉引用dataArrayElement 0和valaidateArrayElement 0 我将它输出到一个JTable,并以不同的颜色显示任何点击“

我正在尝试创建一个文件验证程序,因此,导入一个csv文件,检查内容,检查每个字段是否为空,然后检查每个字段的长度。如果它大于指定的值(每个字段不同),那么我希望将其显示为不同的颜色,这样我就可以轻松地识别任何不适合我的数据库的字段

我设法将文件读入数组,检查它是否为null,并根据静态值检查字段长度。我有另一个包含字段大小的数组,但我似乎无法获得交叉引用dataArrayElement 0和valaidateArrayElement 0

我将它输出到一个JTable,并以不同的颜色显示任何点击“太大”的内容

Integer[] validateLength = {8,2,22,11,25,13,6,2,34,11,35,35,34,11,1};

   class checkValue{
        public String validate(String value){
        // Check to see if the cell is null or blank
        if (StringUtils.isNullOrBlank(value)) {
            return "EMPTY";
        } else if (value.length() > 8) { //Work out how to set this as differing field lengths
            return "TOOBIG";
          }
          else {
            return "OK";
          }
      }
    }


class CustomRenderer extends DefaultTableCellRenderer 
{
private static final long serialVersionUID = 6703872492730589499L;
private checkValue cv = new checkValue();

    public JComponent getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
    {
        JComponent cellComponent = (JComponent) super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
        if (cv.validate(table.getValueAt(row, column).toString()).equals("TOOBIG")){
            cellComponent.setBackground(Color.RED);
            cellComponent.setForeground(Color.YELLOW);
            cellComponent.setToolTipText("Data is too big for the DB");
        } else if(cv.validate(table.getValueAt(row, column).toString()).equals("EMPTY")){
            cellComponent.setBackground(Color.GRAY);
            cellComponent.setForeground(Color.WHITE);
            cellComponent.setToolTipText("Field is empty in import file!");
        }  else   {
            cellComponent.setBackground(Color.WHITE);
            cellComponent.setForeground(Color.BLACK);
          }
        return cellComponent;
    }
}
在此方面的任何帮助都将不胜感激


谢谢

您可以在validate方法中传递数据元素的索引,并从validateLength检查相应的值

    Integer[] validateLength = {8,2,22,11,25,13,6,2,34,11,35,35,34,11,1};

    public String validate(String value, int index){
    // Check to see if the cell is null or blank
    if (StringUtils.isNullOrBlank(value)) {
        return "EMPTY";
    } else if (value.length() > validateLength[index]) { 
        return "TOOBIG";
      }
      else {
        return "OK";
      }
  }
调用此方法时,传递索引(假设要验证的值跨列)


希望这有帮助

“如何使用数组验证另一个数组中的元素长度?”以及。。你认为这与Swing有什么关系?我正在JFrame上显示它,当我创建问题时,它建议我添加Swing标记,如果这增加了混淆,我表示歉意。将字段的索引(我猜它是
)传递到
验证(字符串值)
,并使用该索引访问
验证长度
(有一些设计问题,但我现在将忽略它们)。太好了,谢谢你,这让我发疯了!-)(我无法给出答案,因为我没有足够的声誉,但我已经将其标记为答案)很高兴能帮助你。。享受编码乐趣:)
validate(table.getValueAt(row, column).toString(), column);