我正在努力将字符串数字转换为二进制。但 Eclipse 抛出 NumberFormatException。我可以请你看看我的代码吗?我不知道出了什么问题..
public float liczbaF(String lancuch){
float array [] = new float [31];
float liczba;
double mantysa;
int znak;
long cecha;
char element[] = new char[22];
String temp="";
if (lancuch.charAt(0)=='1')
znak=-1;
else
znak=1;
for(int i=1;i<8;i++)
{
element[i-1] = lancuch.charAt(i);
}
temp=String.valueOf(element);
System.out.println(temp);
cecha=Integer.parseInt(temp,10);
cecha=cecha-127;
System.out.println(cecha);
for(int i=31;i>9;i--)
{
element[31-i] = lancuch.charAt(i);
}
temp=String.valueOf(element);
mantysa=(((Integer.parseInt(temp,10))/(pow(2,22)))+1);
liczba=(float)(mantysa*pow(2,cecha));
return liczba;
}
它抛出:
Exception in thread "main" java.lang.NumberFormatException: For input string: "1001101
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at Konwersja.liczbaF(Konwersja.java:30)
at Main.main(Main.java:10)
如果有任何帮助,我将不胜感激。 谢谢
最佳答案
您的元素数组长度为 22:
char element[] = new char[22];
但您只填写前 7 个元素:
for(int i=1;i<8;i++)
{
element[i-1] = lancuch.charAt(i);
}
因此字符串末尾有空字符,这使得它无法解析为整数。 这样效果更好:
temp=String.valueOf(element,0,7);
我建议使用 StringBuilder 将字符添加到字符串,而不是字符数组。
关于java - 数字格式异常 - 使用 parseInt 进行转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30942822/