【发布时间】: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