java - 当一个整数不是作为字符串输入时,如何确定它是八进制还是十进制?

标签 java

我有一个将十进制转换为二进制的代码,但在测试它时我注意到,如果输入八进制,它将输出“错误”的结果。

我想知道如果在调用函数时将八进制作为整数输入输入,是否有任何方法可以排除八进制。因此,如果使用 0123 而不是 123 作为参数,则该方法将使用 123 作为输入来运行,或者对于无效输入返回 null。 该方法必须采用 int 作为输入。

包装器方法检查小数是否小于 0,并且帮助器递归地查找二进制字符串。最后,包装器删除前导 0 并输出一个二进制字符串。

    public static String decimalToBinary(int decimal) {
    if (decimal < 0) {
        return null;
    }
    String result = xDecimalToBinary(decimal);
    /*
     * the following section checks for a string of 0s and removes all of them,
     * leaving the last one if the string is all 0s
     */
    if (result.charAt(0) == '0') {
        result.replaceFirst("^0+(?!$)", "");
    }
    return "0b" + result;
    }

    private static String xDecimalToBinary(int decimal) {
    if (decimal == 0 || decimal == 1) {
        return "" + decimal;
    }
    /*
     * builds binary string right to left taking the recursion of decimalToBin of
     * decimal / 2 on the left and the remainder of decimal / 2 (%2) on the right
     */
    else {
        return "" + xDecimalToBinary(decimal / 2) + decimal % 2;
    }
    }

注意:这是一个类(class),但这个特定功能不是作业的一部分,而是出于我的好奇心。

最佳答案

你不能。

0123 是 Java 中数字“八十三”的一种写法。

如果您想要“一百二十三”,那么您必须写 123(或 0173 或 0x7b)。

您告诉您的方法将 83 转换为二进制,并且它正在这样做。你的方法没有问题。

关于java - 当一个整数不是作为字符串输入时,如何确定它是八进制还是十进制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53404786/

相关文章:

java - 使用 JAX-WS wsimport 创建的 Web 服务在 AIX tomcat 上失败

java - Vert.x 数据访问优于使用 JDBC 的 CompletableFuture.supplyAsync

java - System.currentTimeMillis 交换Java软件和Android

java - 如何从 Midlet 运行 java 应用程序

java - Mysql 使用 hibernate 根据请求进行备份

java - 如何在java中减去hashmap数据

java - 我正在尝试打印 StringBuffer.toString() 但它不起作用

java - 缺少 return 语句编译器警告

java - 忽略 xmlunit 中的空标签

java - 从 ResultSet 中的资源获取 URI