为什么不输入?

时间:2016-01-31 12:15:59

标签: java

当我尝试将数字从十六进制转换为十进制时,即输入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);
    }
}

1 个答案:

答案 0 :(得分:1)

您只需在输入之前添加另一个sc.nextLine()。那可行。像这样:

sc.nextLine();
hexa=sc.nextLine();  
当您输入 2 时,

sc.nextInt()不会在字符串末尾显示\n,只需要数字部分。
\nhexa=sc.nextLine();作为输入。{ 因此,额外的sc.nextLine();将使用该代码并且您的代码将起作用。