我该如何解决 java.lang.NumberFormatException
How can i fix it java.lang.NumberFormatException
public class Ip_to_uint32 {
public static int main(String ip) {
String[] x = ip.split("[.]");
StringBuilder binary = new StringBuilder();
for (int i = 0; i < 4; i++) {
binary.append(binaryform(Integer.parseInt(x[i])));
}
String correct = binary.toString();
int n = Integer.parseInt(correct);
return n;
}
public static String binaryform(int in) {
String binary = Integer.toBinaryString(in);
if (binary.length() != 8){
StringBuilder correctLegth = new StringBuilder();
int difference = 8 - binary.length();
for (int i = 0; i < difference; i++){
correctLegth.append("0");
}
return String.valueOf(correctLegth.append(binary));
}
return binary;
}
它给我这个错误:
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68)
at java.base/java.lang.Integer.parseInt(Integer.java:652)
at java.base/java.lang.Integer.parseInt(Integer.java:770)
at it.edu.itiszuccante.Ip_to_uint32.main(Ip_to_uint32.java:14)
at it.edu.itiszuccante.Ip_to_uint32Test.main(Ip_to_uint32Test.java:12)```
无法将字符串转换为数字,有人可以帮我吗??
(根据作者评论添加:)
java.lang.NumberFormatException: For input string: "10000000001000000000101000000001" under radix 2
在将字符串转换为数字之前添加额外的验证以检查字符串是否为数字(如 NAN)以避免异常
int
的有效范围是从 -0b10000000_00000000_00000000_00000000
到 0b1111111_11111111_11111111_11111111
,但被解析的字符串是 "10000000001000000000101000000001"
(一个附加位 - 符号位)。
这是有效的无符号 int
,而不是 Java 中的基本类型,但可以使用以下方法解析:
Integer.parseUnsignedInt(correct, 2)
(它也可以被解析为 long
并转换(转换)为 int
)
(Java 中没有 unsigned int,所有以 128
或更大开头的 IP 将导致负值 int
。)
public class Ip_to_uint32 {
public static int main(String ip) {
String[] x = ip.split("[.]");
StringBuilder binary = new StringBuilder();
for (int i = 0; i < 4; i++) {
binary.append(binaryform(Integer.parseInt(x[i])));
}
String correct = binary.toString();
int n = Integer.parseInt(correct);
return n;
}
public static String binaryform(int in) {
String binary = Integer.toBinaryString(in);
if (binary.length() != 8){
StringBuilder correctLegth = new StringBuilder();
int difference = 8 - binary.length();
for (int i = 0; i < difference; i++){
correctLegth.append("0");
}
return String.valueOf(correctLegth.append(binary));
}
return binary;
}
它给我这个错误:
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68)
at java.base/java.lang.Integer.parseInt(Integer.java:652)
at java.base/java.lang.Integer.parseInt(Integer.java:770)
at it.edu.itiszuccante.Ip_to_uint32.main(Ip_to_uint32.java:14)
at it.edu.itiszuccante.Ip_to_uint32Test.main(Ip_to_uint32Test.java:12)```
无法将字符串转换为数字,有人可以帮我吗??
(根据作者评论添加:)
java.lang.NumberFormatException: For input string: "10000000001000000000101000000001" under radix 2
在将字符串转换为数字之前添加额外的验证以检查字符串是否为数字(如 NAN)以避免异常
int
的有效范围是从 -0b10000000_00000000_00000000_00000000
到 0b1111111_11111111_11111111_11111111
,但被解析的字符串是 "10000000001000000000101000000001"
(一个附加位 - 符号位)。
这是有效的无符号 int
,而不是 Java 中的基本类型,但可以使用以下方法解析:
Integer.parseUnsignedInt(correct, 2)
(它也可以被解析为 long
并转换(转换)为 int
)
(Java 中没有 unsigned int,所有以 128
或更大开头的 IP 将导致负值 int
。)