【发布时间】:2020-02-12 13:41:23
【问题描述】:
“线程“main”中的异常java.lang.NumberFormatException:对于输入字符串:“l20””
这是我收到的尝试将 3 位字符串类型转换为 int 的错误消息。
如果我理解正确的话,java 中 int 的最大值是 2147483647?
这是导致语法的方法
private int getRed(String key) {
return Integer.parseInt(key.substring(3,6));
}
编辑:为澄清起见,密钥是由以下代码随机生成的 12 位字符串
for(int i=0;i<12;i++) {
Random random = new Random();
key=key+Integer.toString(random.nextInt(10));
}
Edit 2:below 是一个最小的可重现示例,它会产生此错误消息 “线程“主”java.lang.NumberFormatException 中的异常:对于输入字符串:“l35” 在 java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 在 java.lang.Integer.parseInt(Integer.java:580) 在 java.lang.Integer.parseInt(Integer.java:615) 在 Test.getRed(Test.java:57) 在 Test.getKey(Test.java:44) 在 Test.encode(Test.java:36) 在 Test.main(Test.java:70)"
public class Test {
String key;
public Test() {
for(int i=0;i<12;i++) {
Random random = new Random();
key=key+Integer.toString(random.nextInt(10));
}
}
public void encode() {
for(int i=0; i<5;i++) {
int key=getKey(i);
}
}
private int getKey(int i) {
int indicator = i%3;
int returnInt=0;
switch (indicator) {
case 0:
returnInt=getRed(key);
break;
case 1:
returnInt=getGreen(key);
break;
case 2:
returnInt=getBlue(key);
break;
}
return returnInt;
}
private int getRed(String key) {
return Integer.parseInt(key.substring(3,6));
}
private int getGreen(String key) {
return Integer.parseInt(key.substring(6,9));
}
private int getBlue(String key) {
return Integer.parseInt(key.substring(9,11));
}
public static void main(String args[]) {
Test test=new Test();
test.encode();
}
}
【问题讨论】:
-
第一个数字是“一”吗?在我看来,它几乎就像是一只大写的“眼睛”。
-
vi 表示它是小写的“ell”。
-
我很困惑,字符串中不应该有 L
-
@Icarus 我认为您需要编辑您的问题以提供有关此错误如何发生的更多背景信息。我同意您的观点,到目前为止您向我们展示的内容不会导致您遇到的错误。你能提供一个minimal reproducible example吗?
-
提示:字符串连接中不需要
Integer.toString()...
标签: java numbers integer numberformatexception