gpt4 book ai didi

java - 在java中转换为基数10?

转载 作者:太空宇宙 更新时间:2023-11-04 11:45:58 24 4
gpt4 key购买 nike

我有一个家庭作业,我必须将任何基数转换为基数 10。我有一些给定的数字,即“basen”。我必须将这些基数转换为基数 10。我唯一陷入困境的是这部分代码:

answer = ; // Not sure what I have to put in here

我看过一些有关转换为基数十的其他帖子,但我只是不确定如何将它们合并到我的代码中。

public class BaseN {

public static final int BASEN_ERRNO = -1;
public static int digit = 0;

public static void main(String[] argv) {
basen(512, 6);
basen(314, 8);
basen(49, 5);
basen(10101, 2);
}

public static void basen(int n, int b) {
int ans = basen(n, b, 1, 0);
if (ans == BASEN_ERRNO)
System.out.println(n + " is not a valid base-" + b + " number");
else
System.out.println(n + " base-" + b + " = " + ans + " base-10");
}

public static int basen(int number, int base, int placevalue, int answer) {
if (number == 0) return answer;
digit = number % 10;
if (digit >= base) return BASEN_ERRNO;
answer = 1;// not sure what to put here
number = 0;
placevalue = 0;
return basen(number, base, placevalue, answer);
}
}

最佳答案

您可以这样查看以 n 为基数的 k 长度数:
x(0)*n^(k-1) + x(1)*n^(k-2) + ... + x(k-1)*n^1 + x(k)*n^0
其中 x(0), x(1), ..., x(k) 是从左边开始第 k 位置的数字。

因此,如果您尝试将 101 以 2 为基数转换为以 10 为基数,您需要执行以下操作:
1 * 2^2 + 0 * 2^1 + 1 * 2^0 = 4 + 0 + 1 = 5 基数 10

假设您想将数字 352 从 6 进制转换:
3 * 6^2 + 5 * 6^1 + 2 * 6^0 = 108 + 30 + 2 = 145 基数 10

您正在寻找的代码是这样的:

int[] digits = {3, 5, 2};
int base = 6;
int answer = 0;
for(int i = digits.length - 1; i >= 0; i--)
{
answer += digits[i] * Math.pow(base,digits.length-i-1);
}
return answer;

将返回 145。

希望即使我的实现是迭代的,您也应该能够将其应用到您的递归实现中。

关于java - 在java中转换为基数10?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42353426/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com