当我尝试将数字从十六进制转换为十进制时,即输入2作为第一个输入,输出结束,
'输入十六进制数
转换为十进制为0'
它永远不会等我输入字符串。我已经评论了它不接受字符串的地方。 有人能弄明白什么是错的吗?
谢谢!
public static void main(String args[])
{
Scanner sc=new Scanner(System.in);
DecimalToHexadecimal ob=new DecimalToHexadecimal();
int op;
do
{
System.out.println("To convert decimal to hexadecimal enter 1 and to convert hexadecimal to decimal enter 2");
op=sc.nextInt();
if (op!=1 && op!=2)
{
System.out.println("Error!");
}
}while (op!=1 && op!=2);
if (op==1)
{
int n;
do
{
System.out.println("Enter a number");
n=sc.nextInt();
if (n<0)
{
System.out.println("Error!");
}
}while (n<0);
String hexa=ob.decimaltohexa(n);
System.out.println(n+" converted to Hexadecimal is "+hexa);
}
else
{
int d;
String hexa="";
do
{
System.out.println("Enter a hexadecimal number");
hexa=sc.nextLine(); //This is where it doesn't take the input
d=ob.hexatodeci(hexa);
if (d!=-1)
{
System.out.println(hexa+" converted to decimal is "+d);
}
if (d==-1)
{
System.out.println("Error!");
}
}while (d==-1);
}
}
答案 0 :(得分:1)
您只需在输入之前添加另一个sc.nextLine()
。那可行。像这样:
sc.nextLine();
hexa=sc.nextLine();
当您输入 2 时, sc.nextInt()
不会在字符串末尾显示\n
,只需要数字部分。
\n
将hexa=sc.nextLine();
作为输入。{
因此,额外的sc.nextLine();
将使用该代码并且您的代码将起作用。