gpt4 book ai didi

java - 如何将大的二进制转换为十进制?

转载 作者:行者123 更新时间:2023-12-01 10:02:55 25 4
gpt4 key购买 nike

当我输入10、1011、1101等二进制时,它可以工作。但是当我输入10011010010时,它总是打印“不是二进制”,而应该是1234。如何修改?

import java.util.Scanner;
public class Binary {

public static int toDecimal(String b) {
int decimal = Integer.parseInt(b,2);
return decimal;
}


public static boolean isBinary(String b) {
int inputNum = Integer.parseInt(b);

while(inputNum != 0){
if(inputNum % 10 > 1){
return false;
}
inputNum = inputNum / 10;
}
return true;
}

public static void main(String[] args) {

System.out.print("Enter binary: ");
Scanner in = new Scanner(System.in);
String binaryNum = in.next();

try{
int intNum = Integer.parseInt(binaryNum);

boolean isBinary = isBinary(binaryNum);
if(isBinary){
int outputDecimal = toDecimal(binaryNum);
System.out.println("\n"+ outputDecimal +" in decimal");
}else{
System.out.println("\n" + "Not binary!");
}
}catch(Exception e){
System.out.println("\n" + "Not binary!");
}
}
}

最佳答案

为什么要进行这么多从 string 到 int 的转换?将输入保持为字符串形式,以检查输入是否为二进制。然后最后将字符串转换为数字类型。如果您认为输入不会超过最大 int 值,可以使用 parseInt(),否则使用 longBigInteger

如果输入为字符串,您的 isBinary() 可能如下所示:

public static boolean isBinary(String b) {
for(int i=0; i<b.length(); i++) {
if(b.charAt(i) != '0' && b.charAt(i) != '1') {
return false;
}
}
return true;
}

然后将所有 Integer.parseInt() 调用更改为 long.parseLong(),并相应地更改关联变量,即从 int 更改为 long。目前,这应该足以满足您的期望。我的意思是,对于任意大的输入,您必须使用 BigInteger(见下文)。

<小时/>

如果您选择使用java.math.BigInteger ,您可以将构造函数与基数一起使用,如下所示:

public static BigInteger toDecimal(String b) {
return new BigInteger(b, 2);
}

关于java - 如何将大的二进制转换为十进制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36674156/

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