【发布时间】:2020-10-29 15:53:09
【问题描述】:
我正在尝试从字符串中获取一个数字并对其执行操作。这是我正在处理的相关代码(已更新):
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 中的异常:对于输入字符串:“64406849400888” 在 java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 在 java.base/java.lang.Long.parseLong(Long.java:692) 在 java.base/java.lang.Long.parseLong(Long.java:817) 在 MasterCardGenerator.main(MasterCardGenerator.java:54)
【问题讨论】:
-
267574698286122可能太大而不能成为int? -
@hev1 但他使用它:
currentNum = parseInt(....);和后来的sum = sum + currentNum;(但我承认这很混乱,因为 parseInt 之前的换行符)
标签: java