Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.lang.NumberFormatException如何在代码中修复此问题?_Java - Fatal编程技术网

java.lang.NumberFormatException如何在代码中修复此问题?

java.lang.NumberFormatException如何在代码中修复此问题?,java,Java,我花了几个小时为我的最终编程项目写了一段代码,在研究和查找了很多次我的代码之后,我想不出问题出在哪里。该应用程序模拟了一个我有名字和银行账号的银行账户,当我试图检查银行账号是否正确时,问题就出现了,它使用了一种奇怪的算法,银行在我的国家使用这种算法来检查银行账号是否正确,我自己也制定了一种方法来检查它,如下所示: private static boolean esCorrecto(String numero) { if(numero.length() != 20){ retur

我花了几个小时为我的最终编程项目写了一段代码,在研究和查找了很多次我的代码之后,我想不出问题出在哪里。该应用程序模拟了一个我有名字和银行账号的银行账户,当我试图检查银行账号是否正确时,问题就出现了,它使用了一种奇怪的算法,银行在我的国家使用这种算法来检查银行账号是否正确,我自己也制定了一种方法来检查它,如下所示:

private static boolean esCorrecto(String numero) {

    if(numero.length() != 20){
    return false;
}else{
        String digCtrl = numero.substring(8, 9);
        int digCtrlV = (Integer.parseInt(numero.substring(0,0)) * 4) + (Integer.parseInt(numero.substring(1,1)) * 8) +
                (Integer.parseInt(numero.substring(2,2)) * 5) + (Integer.parseInt(numero.substring(3,3)) * 10) +
                (Integer.parseInt(numero.substring(4,4)) * 9) + (Integer.parseInt(numero.substring(5,5)) * 7) +
                (Integer.parseInt(numero.substring(6,6)) * 3) + (Integer.parseInt(numero.substring(7,7)) * 6);
        digCtrlV = digCtrlV%11;
        digCtrlV = 11 - digCtrlV;
        if(digCtrlV == 10){
            digCtrlV = 1;
        }
        int digCtrlV1 = (Integer.parseInt(numero.substring(10,10)) * 4) + (Integer.parseInt(numero.substring(11,11)) * 4) +
                (Integer.parseInt(numero.substring(12,12)) * 4) + (Integer.parseInt(numero.substring(13,13)) * 8) +
                (Integer.parseInt(numero.substring(14,14)) * 5) + (Integer.parseInt(numero.substring(15,15)) * 10) +
                (Integer.parseInt(numero.substring(16,16)) * 9) + (Integer.parseInt(numero.substring(17,17)) * 7) +
                (Integer.parseInt(numero.substring(18,18)) * 3) + (Integer.parseInt(numero.substring(19,19)) * 6);
        digCtrlV1 = digCtrlV1%11;
        digCtrlV1 = 11 - digCtrlV1;
        if(digCtrlV1 == 10){
            digCtrlV1 = 1;
        }
        String digCtrlVerdaderos = Integer.toString(digCtrlV) + Integer.toString(digCtrlV1);
        if(digCtrl.equals(digCtrlVerdaderos)){
            return true;
        }else
            return false;
    }
首先,它检查数字的长度是否正确(20位),然后通过执行一些操作来检查控制数字(9位和10位)是否正确。Main方法有几行,但我在以下部分遇到了错误:

 public static void main(String[] args) throws Ex {
       int control = -1;
       Scanner teclado = new Scanner(System.in);
       System.out.println("Introduce nombre del titular y un numero de cuenta (pulsar enter despues de cada introduccion) ");
       CuentaBancaria cta = new CuentaBancaria(teclado.next(), teclado.next(), 0);
       if(esCorrecto(cta.getNumeroCuenta())){
最后,我得到的错误是:

线程“main”java.lang.NumberFormatException中的异常:用于输入 字符串:“”位于 forInputString(NumberFormatException.java:65) 位于java.lang.Integer.parseInt(Integer.java:592) java.lang.Integer.parseInt(Integer.java:615)位于 proyectofinal.proyectofinal.esCorrecto(proyectofinal.java:82)位于 proyectofinal.proyectofinal.main(proyectofinal.java:21)java结果:1

numerio.substring(n,n)
是长度为零的字符串。要提取所需的一个字符串,请执行以下操作:
numero.substring(n,n+1)
。看

除了制作子字符串,您还可以使用;尽管对于无效的输入,它返回-1,而不是抛出异常,因此为了捕获错误(并保持整洁),最好将其包装到一个方法中:

private static int digit(String s, int pos) {
    int digit = Character.digit(s.charAt(pos), 10);
    if (digit == -1) throw new NumberFormatException(s);
    return digit;
}
numerio.substring(n,n)
是长度为零的字符串。要提取所需的一个字符串,请执行以下操作:
numero.substring(n,n+1)
。看

除了制作子字符串,您还可以使用;尽管对于无效的输入,它返回-1,而不是抛出异常,因此为了捕获错误(并保持整洁),最好将其包装到一个方法中:

private static int digit(String s, int pos) {
    int digit = Character.digit(s.charAt(pos), 10);
    if (digit == -1) throw new NumberFormatException(s);
    return digit;
}
numerio.substring(n,n)
是长度为零的字符串。要提取所需的一个字符串,请执行以下操作:
numero.substring(n,n+1)
。看

除了制作子字符串,您还可以使用;尽管对于无效的输入,它返回-1,而不是抛出异常,因此为了捕获错误(并保持整洁),最好将其包装到一个方法中:

private static int digit(String s, int pos) {
    int digit = Character.digit(s.charAt(pos), 10);
    if (digit == -1) throw new NumberFormatException(s);
    return digit;
}
numerio.substring(n,n)
是长度为零的字符串。要提取所需的一个字符串,请执行以下操作:
numero.substring(n,n+1)
。看

除了制作子字符串,您还可以使用;尽管对于无效的输入,它返回-1,而不是抛出异常,因此为了捕获错误(并保持整洁),最好将其包装到一个方法中:

private static int digit(String s, int pos) {
    int digit = Character.digit(s.charAt(pos), 10);
    if (digit == -1) throw new NumberFormatException(s);
    return digit;
}

继续使用起始和结束相同的子字符串,子字符串提取空字符串
“”
。使用
子字符串(i,i+1)
获取位置
i
上的数字


您继续使用起始和结束相同的子字符串,子字符串提取空字符串
“”
。使用
子字符串(i,i+1)
获取位置
i
上的数字


您继续使用起始和结束相同的子字符串,子字符串提取空字符串
“”
。使用
子字符串(i,i+1)
获取位置
i
上的数字


您继续使用起始和结束相同的子字符串,子字符串提取空字符串
“”
。使用
子字符串(i,i+1)
获取位置
i
上的数字


So例如字符串aeiou;子字符串(0,1)将是a,子字符串(1,2)将是e,依此类推?例如字符串aeiou;子字符串(0,1)将是a,子字符串(1,2)将是e,依此类推?例如字符串aeiou;子字符串(0,1)将是a,子字符串(1,2)将是e,依此类推?例如字符串aeiou;子串(0,1)是a,子串(1,2)是e,依此类推?