首页 > 解决方案 > java.lang.NumberFormatException 使用 parseInt

问题描述

我正在尝试从字符串中获取一个数字并对其执行操作。这是我正在处理的相关代码(更新):

    String cardNumber;
    String curNum;
    long currentNum;
    int firstNum;
    int randNum;
    int i;
    long sum = 0; 

 while (i <= 15) {
            //Delete this line if it doesnt work
            currentNum = Long.parseLong(cardNumber.substring(i));
        if (i % 2 == 0) {
            //currentNum = Integer.parseInt(cardNumber.charAt(i));
            currentNum = currentNum * 2;
            if (currentNum > 9) {
                currentNum = currentNum - 9;
                sum = sum + currentNum;
            }
            else {
                //currentNum = Integer.parseInt(cardNumber.charAt(i));  
                sum = sum + currentNum;
            }   
            i++;
        }
        long lastVal = 10 - (sum % 10);
        char charNum = (char) lastVal;
        //add int to char statement here
        cardNumber = cardNumber + charNum;
    }
        System.out.println(cardNumber);

        userNum--;
    }

// 代码是我正在研究并且不想丢失的另一个选项,所以如果有办法让它使用它,那就太好了!此代码返回的错误消息是:

线程“main”java.lang.NumberFormatException 中的异常:对于输入字符串:java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.base/java.lang.Long.parseLong 的“64406849400888” (Long.java:692) 在 java.base/java.lang.Long.parseLong(Long.java:817) 在 MasterCardGenerator.main(MasterCardGenerator.java:54)

标签: java

解决方案


您说您正在尝试从字符串中获取“一个”数字。如果确实如此,并且您尝试一次检查cardNumber一个数字,那么您想要cardNumber.substring(i, i+1)而不是cardNumber.substring(i).

阅读 javadocssubstring(int)substring(int, int)了解原因。


推荐阅读