java - 在java中读取长二进制数

标签 java binary number-formatting

我正在尝试编写一个将二进制数转换为十进制的程序,但是一旦我有一个大于 10 位的二进制数,我就会收到 java.lang.numberformatexception 错误。我想知道应该如何重写代码以处理二进制数:

try{
                //will throw an exception if the user's input contains a non-Integer
                int inputNumber = Integer.parseInt(returnEnterNumber());
                //when our user wants to convert from binary to decimal
                if(binaryToDecimal.isSelected()){
                    //checks if number is binary
                    int checkNumber = inputNumber;
                    while (checkNumber != 0) {
                        if (checkNumber % 10 > 1) {
                            throw new InvalidBinaryException();
                        }
                        checkNumber = checkNumber / 10;
                    }
                    //converts from binary and outputs result
                    int n = Integer.parseInt(returnEnterNumber(), 2);
                    displayConvertedNumber(Integer.toString(n));
                }
            }
            catch(Exception e)  {
                displayConvertedNumber("WRONG INPUT! - TRY again");
            }

编辑:我理解代码失败的原因,看看它如何将数字作为小数并溢出。我不知道如何重写代码以立即将输入作为二进制文件。

最佳答案

这不是检查二进制数的有效方法。您要转换为以 10 为基数的 int,然后检查以 10 为基数的每个数字是零还是一。转换本身将在足够长的输入字符串上失败,如果没有,检查也会失败。

您不应该全部转换,您应该检查输入字符串本身。

编辑实际上你不需要做任何事情。 Integer.parseInt() 将为您检查它,如果字符串不是指定基数中的数字,则抛出 NumberFormatException

关于java - 在java中读取长二进制数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29337712/

相关文章:

javascript - angularjs 小数点是逗号

java - 线程 "main"java.lang.UnsatisfiedLinkError : Cannot find TensorFlow native library for OS: linux, 架构中的异常:x86_64

java - 如何找到 2 个单链表的公共(public)节点?

java - org.deeplearning4j.exception.DL4JInvalidInputException : Input that is not a matrix; expected matrix (rank 2), 获得排名 3 的数组

Python:如何先读取一个元素,然后读取两个元素?

c++ - 将二进制数转换为十进制数的快速方法

ms-access - 如何格式化报告中的数字?

java - 在 java J2ME 中使用 new 运算符和不使用 new 运算符分配的字符串有什么区别?

c - c 上的二进制文件

python - 使用不同区域设置设置百分比格式(逗号为小数)