java - 数字格式异常 - 使用 parseInt 进行转换

标签 java string parsing int parseint

我正在努力将字符串数字转换为二进制。但 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/

相关文章:

Java 代码中的 java.util.NoSuchElementException

java - ROME 如何确定提要中是否使用了自定义模块?

php - 解析 XML 并回显结果

python - 用于在 python 中进行词法分析、标记化和解析的资源

java - JPA 配置与单个存储库的多个存储库实现

Java、命名Bean、通配符?

C++:使用 cin.getline()

PHP - 在字符串中连接或直接插入变量

java - 字符串中的 "Null variable checking"

python - 优化正则表达式技术