【发布时间】:2021-08-10 16:44:37
【问题描述】:
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
【问题讨论】:
-
看起来你有一个 ip 地址传递给 main 但不确定。告诉我们你到底在传递什么。这将有助于理解您传递的输入...
-
请显示完整的堆栈跟踪,而不是以
at开头的行 -
您可以使用调试器实际查看为变量设置了哪些值。这可能会为您提供线索。
-
你可能想指定你正在解析一个无符号整数,并且输入是基数 2: int n = Integer.parseUnsignedInt(correct, 2);
-
@Andy java.lang.NumberFormatException:对于输入字符串:基数 2 下的“10000000001000000000101000000001”
标签: java parsing numberformatexception parseint