【发布时间】:2022-02-11 15:15:30
【问题描述】:
我似乎无法正确地将二进制数转换为十进制数。我相信我真的很接近,实际上我想使用一个字符串来保存二进制数来保存它,然后重新编写我的方法以仅使用 .length 来获取大小,但我不知道如何实际做到这一点.有人可以帮我弄清楚如何使用字符串重写代码来保存二进制值,然后只使用递归而不使用循环来获取十进制值吗?
这是我现在的完整代码,我不会摆脱询问二进制文件的大小并使用字符串自己找出它。请帮忙:)
package hw_1;
import java.util.Scanner;
public class Hw_1 {
public static void main(String[] args) {
int input;
int size;
Scanner scan = new Scanner(System.in);
System.out.print("Enter decimal integer: ");
input = scan.nextInt();
convert(input);
System.out.println();
System.out.print("Enter binary integer and size : ");
input = scan.nextInt();
size = scan.nextInt();
System.out.println(binaryToDecimal(input, size));
}
public static void convert(int num) {
if (num > 0) {
convert(num / 2);
System.out.print(num % 2 + " ");
}
}
public static int binaryToDecimal(int binary, int size) {
if (binary == 0) {
return 0;
}
return binary % 10
* (int) Math.pow(2, size) + binaryToDecimal((int) binary / 10, size - 1);
}
}
【问题讨论】:
-
我认为这一定是一项家庭作业,因为 java.lang.Integer 中内置了一个方法可以为您完成这项工作。我/我们可以告诉你答案,但是你会学到什么?
-
我已经解释过我知道我需要做什么——我只是不知道这样做的语法或设置。我正在寻求帮助
-
拒绝使用字符串会使事情变得更加困难。通常,通过使用 binary%10 并获取个位数,然后乘以 2^size,您正在反转数字。
-
我如何实现字符串呢?我知道我需要这样做,但我不知道怎么做
-
输入一个字符串并使用 scan.next() 考虑“1010”,当字符串为空时结束递归。 input.charAt(0) 是第一个字符(在这种情况下是一个)。 input.length() 是字符数(您当前的大小), input.substring(1) 将返回“010”或位置 0 处字符之后的所有内容。