gpt4 book ai didi

java二进制转十进制

转载 作者:行者123 更新时间:2023-11-29 05:25:58 25 4
gpt4 key购买 nike

我无法将二进制转换为十进制。我们必须使用函数进行转换并手动完成,而不是使用预定义的函数。到目前为止,这是我所拥有的,我知道这是一团糟,但我一直在研究如何修复它。谢谢!

import java.util.Scanner;

public class BinaryConversion {

public static void main(String[] args) {
Scanner input = new Scanner(System.in);

String inString;
int decimal;

System.out.println("Enter a binary number: ");
inString = input.nextLine();

while (!"-1".equals(inString)) {
int i;
int binaryLength;

binaryLength = inString.length();
public static int binaryToDecimal (String binaryString) {

for (i = binaryLength - 1, decimal = 0; i >= 0; i--) {
if (inString.charAt(i) == '1')
decimal = decimal + Math.pow(2,inString.length() - 1 - i);
}
return (int) decimal;
}
System.out.println(decimal);

System.out.println("Enter a binary number: ");
inString = input.nextLine();
}
System.out.println("All set !");
}
}

最佳答案

要使用一个函数,如您的作业要求,您必须在 main 方法之外编写函数,然后包含一个调用 函数的语句。因此,将此移至 public static void main 行:

public static int binaryToDecimal (String binaryString) {

for (i = binaryLength - 1, decimal = 0; i >= 0; i--) {
if (inString.charAt(i) == '1')
decimal = decimal + Math.pow(2,inString.length() - 1 - i);
}
return (int) decimal;
}

此外,每个函数或方法(包括main)都有自己使用的变量,称为本地变量;但是每个函数使用的局部变量都是它自己单独的副本。因此,上述函数将无法使用属于 mainbinaryLengthdecimal 变量。您需要在 binaryToDecimal 中声明它们:

public static int binaryToDecimal (String binaryString) {

int decimal;
int binaryLength;
for (i = binaryLength - 1, decimal = 0; i >= 0; i--) {
if (inString.charAt(i) == '1')
decimal = decimal + Math.pow(2,inString.length() - 1 - i);
}
return (int) decimal;
}

此外,此函数将无法访问 maininString,但想法是您已将要处理的字符串赋予函数with,它被称为 binaryString。所以把函数中的inString改成binaryString:

public static int binaryToDecimal (String binaryString) {

int decimal;
int binaryLength;
for (i = binaryLength - 1, decimal = 0; i >= 0; i--) {
if (binaryString.charAt(i) == '1')
decimal = decimal + Math.pow(2,binaryString.length() - 1 - i);
}
return (int) decimal;
}

还要注意 binaryLengthdecimal 变量与 main 中的同名变量完全无关。这意味着当您在 main 中分配 binaryLength 时,这对 binaryToDecimal 中的 binaryLength 没有影响。您需要在函数中分配它。将 int binaryLength; 更改为

int binaryLength = binaryString.length();

最后,为了使用该函数,main 需要调用它。将其放入 main 函数中:

decimal = binaryToDecimal(inString);

main 执行它时,它将调用该函数并告诉它与 inString 一起工作。不过,该函数将调用该 binaryString。该函数将返回一个结果,然后 main 将该结果赋值给变量 decimal——这意味着局部变量 decimal 属于main,因为上面的语句在 main 中。

我不知道这是否会使您的整个程序正常工作。 (它应该,但我不确定。)但我只是想解释如何使用函数的细节。

关于java二进制转十进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22668908/

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