【问题标题】:Why my binary to decimal conversion is not working in java?为什么我的二进制到十进制转换在 java 中不起作用?
【发布时间】:2020-12-07 19:24:28
【问题描述】:

我有这种方法,它将用户的二进制输入转换为十进制值。

主要方法:

public static void main(String args[])
{
String inputByUserString=""; //number input by the player
int inputByUserInteger;
Scanner sc=new Scanner(System.in);
System.out.println("Enter a number"); //getting the input
inputByUserString=sc.nextLine();
inputByUserInteger=Integer.parseInt(inputByUserString);

然后我创建了一个 switch case,其中有更多的转换选项,例如十进制数到二进制数等...

然后在那个开关中我调用一个方法:

    int binaryToDecimalNumberVariable=obj1.binaryToDecimalConversion(inputByUserInteger);   
    System.out.println("Binary Number:"+inputByUserInteger);
    System.out.println("Decimal Number:"+binaryToDecimalNumberVariable);

二进制转十进制的方法:

public int binaryToDecimalConversion(int inp) //to convert binary number into decimal number
{
int a1;int a2=0;int a3 = 0;
while(inp>0)
{
    a1=inp%10;
    a1=inp/10;
    a3=(int)(a3+(a1*(Math.pow(2,a2)))); //result
    a2++;   
}
return a3;
}

整个开关盒:

  System.out.println("What type of conversion do you want?");
  System.out.println("1)Decimal number to Binary number");
  System.out.println("2)Binary number to Decimal number");
  System.out.println("3)Decimal number to Octal number");
  System.out.println("4)Octal number to Decimal number");
  System.out.println("5)Decimal number to Hexadecimal number");
  System.out.println("6)Hexadecimal number to Decimal number");
  System.out.println("7)Octal number to Hexadecimal number");
  System.out.println("8)Hexadecimal number to Octal number");
  int choice=sc.nextInt();
  switch(choice)
  {
  case 1: //Decimal number to Binary number
  break;
  case 2: //Binary number to Decimal number
    int binaryToDeci=obj1.binaryToDecimalConversion(inputByUserInteger);    
    System.out.println("Binary Number:"+inputByUserInteger);
    System.out.println("Decimal Number:"+binaryToDeci);
break;
case 3: //Decimal number to Octal number
break;
case 4: //Octal number to Decimal number
break;
case 5: //Decimal number to Hexadecimal number
break;
case 6: //Hexadecimal number to Decimal number
break;
case 7: //Octal number to Hexadecimal number
break;
case 8: //Hexadecimal number to Octal number
break;
default:
System.out.println("Invalid Input");
} //switch close

编译时没有显示错误,但是当我执行它时,它只是卡住了。

执行时显示的错误:

所以,帮帮我吧。

【问题讨论】:

  • 您记得在您的案例中使用break; 吗?你能展示整个 switch-case 块吗?另外,为什么不使用nextLine() 而不是nextInt()?那么你就不需要转换了。
  • 您是否尝试过调试或只是插入一些System.out.println() 以查看方法是否被正确调用、switch-case 是否正常工作等?
  • 您为什么要尝试将 int 从二进制转换为十进制?这是没有意义的。 int 本身没有基数。字符串形式有基数,所以在string转int、int转string时要进行转换。
  • 在任何时候,您是否像这样关闭 sc:sc.close()?如果你有,那可能是你的问题的原因。
  • 不,这不是问题所在。 binaryToDecimalConversion 方法中有一个明显的无限循环。但是,确实不需要该方法。看看我的回答,把那个转换方法删掉,问题就解决了。

标签: java methods binary decimal


【解决方案1】:

为了扩展我的评论,处理您的要求的正确方法:

String myBinaryNr = sc.next();
int myNr = Integer.parseInt(myBinaryNr, 2);
String myDecimalNr = Integer.toString(myNr, 10);

最后 10 个是可选的,因为它是默认值。

【讨论】:

    【解决方案2】:

    如果它卡住了,它可能没有检测到输入并且正在等待它。为了确认这一点,我会添加一个

    System.out.println("Test" + choice);
    

    就在选择输入下,所以会是这样的:

    int choice = sc.nextInt();
    System.out.println("Test" + choice);
    switch(choice){...}
    

    如果打印不正确,那么您已经找到了问题。可能与System.in有关

    【讨论】:

      【解决方案3】:

      没关系,我只需要这样做就可以解决问题。

      public int binaryToDecimalConversion(int inp) //to convert binary number into decimal 
      {
      int a1;int a2=0;int a3 = 0;
      while(inp>0)
      {
      a1=inp%10;
      a3=(int)(a3+(a1*(Math.pow(2,a2)))); //result
      a2++;   
      inp=inp/10;
      }
      return a3;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-01-17
        • 2013-11-26
        • 2016-05-18
        • 1970-01-01
        • 2015-06-02
        • 2011-07-09
        • 1970-01-01
        • 2020-06-25
        相关资源
        最近更新 更多