java - 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)
解决方案
您说您正在尝试从字符串中获取“一个”数字。如果确实如此,并且您尝试一次检查cardNumber
一个数字,那么您想要cardNumber.substring(i, i+1)
而不是cardNumber.substring(i)
.
阅读 javadocssubstring(int)
并substring(int, int)
了解原因。
推荐阅读
- typescript - 打字稿文件命名约定
- sql-server - 具有可选输出的存储过程
- spring - 在 AWS Lambda 中运行时,Dagger 与 Guice 或 Spring 相比要快多少?
- swift - 以编程方式添加标签栏标题和图标 Swift
- javascript - 如何确保功能与承诺继续执行
- node.js - 当父级不关闭管道时如何从标准输入捕获 JSON?
- apache-spark - 获取 Apache Spark Dataframe (Scala) 中列的最大值
- regex - 正则表达式捕获字符后的文本并以空格终止
- javascript - 如何在javascript中的split函数中传递多个分隔符
- javascript - 对齐对象数组并与最新的合并