我有一个将十进制转换为二进制的代码,但在测试它时我注意到,如果输入八进制,它将输出“错误”的结果。
我想知道如果在调用函数时将八进制作为整数输入输入,是否有任何方法可以排除八进制。因此,如果使用 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/