当前位置: 代码迷 >> java >> 如何检查数组是否不为空并且其某些特定值是数字?
  详细解决方案

如何检查数组是否不为空并且其某些特定值是数字?

热度:98   发布时间:2023-07-25 18:59:39.0

我有两个声明的数组和一些参数。 首先,我需要检查数组是否不为空,然后检查第一个数组的特定参数是否为数字。

现在我有两个数组。 其中一个具有所有参数,第二个仅具有必须为数字的参数(也包含在第一个数组中)

我想在一个方法中进行两项检查,因为我有两种不同的检查方法。

这就是我所拥有的

/** Array con parametros no obligatorios   Array con los parametros obligatorios. */
private static final String[] PARAMETROS_OBLIGATORIOS = new String[] {
    "idFichero","nombreFichero","qnuOrdest","idHsc","timCamestad","codGrupoest","qnuOrdestRcvd"
};

/** Array con los parametros que deben ser numericos. */
private static final String[] PARAMETROS_NUMERICOS = new String[] {
    "idFichero","idHsc","qnuOrdest","qnuOrdestRcvd"
};

private void validarObligatorios(final JobParameters parameters) throws JobParametersInvalidException {
    for (String nombre : PARAMETROS_OBLIGATORIOS) {
        if (StringUtils.isBlank(parameters.getString(nombre))) {
            String error ="El parametro " + nombre + " es obligatorio"; 
            LOGGER.error(error);
            throw new JobParametersInvalidException(error);
        }

    }
}



private void validarNumericos(final JobParameters parameters) throws JobParametersInvalidException {
    for (String nombre : PARAMETROS_NUMERICOS) {
        if (!StringUtils.isNumeric(parameters.getString(nombre))) {
            String error = "El parametro " + nombre + " debe ser numerico"; 
            LOGGER.error(error);
            throw new JobParametersInvalidException(error);
        }
    }
}

我该怎么做才能用独特的方法完成两个步骤?

提前致谢!

validarNumericas通过以下单个函数替换您的2个方法validarObligatoriosvalidarNumericas回答您的问题?

private void validarObligatoriosYNumericos(final JobParameters parameters) throws JobParametersInvalidException {
    for (String nombre : PARAMETROS_OBLIGATORIOS) {
        if (StringUtils.isBlank(parameters.getString(nombre))) {
            String error ="El parametro " + nombre + " es obligatorio"; 
            LOGGER.error(error);
            throw new JobParametersInvalidException(error);
        }

    }

    for (String nombre : PARAMETROS_NUMERICOS) {
        if (!StringUtils.isNumeric(parameters.getString(nombre))) {
            String error = "El parametro " + nombre + " debe ser numerico"; 
            LOGGER.error(error);
            throw new JobParametersInvalidException(error);
        }
    }
}

HTH!

将数字列数组复制到列表中,并使用contains来查看是否应检查值。 此解决方案假定数字列数组是强制列数组的子集,但看起来这是一个安全的假设。

private void validarObligatorios(final JobParameters parameters) throws JobParametersInvalidException {
    List<String> numericColumns = Arrays.asList(PARAMETROS_NUMERICOS );
    String error = null;
    for (String nombre : PARAMETROS_OBLIGATORIOS) {
        if (StringUtils.isBlank(parameters.getString(nombre))) {
            error ="El parametro " + nombre + " es obligatorio"; 
        } else if (numericColumns.contains(nombre) {
            if (!StringUtils.isNumeric(parameters.getString(nombre))) {
               error = "El parametro " + nombre + " debe ser numerico";                     
            }
        }
        if (error != null)  {
            LOGGER.error(error);
            throw new JobParametersInvalidException(error);                
        }
    }
}
  相关解决方案