使用InputStream.skip()时出错

时间:2015-02-01 15:18:51

标签: java inputstream

我正在寻找类似于C ++的cin.ignore()函数。

我是JAVA的新手,我尝试过这样的事情

Scanner user_input = new Scanner(System.in) ;   
int num1, num2 ; 

System.out.print("\n Enter the two numbers : " +
                 "\n number 1 : ") ;    
num1 = user_input.nextInt() ; 

System.out.print("\n Number 2 : ") ; 
num2 = user_input.nextInt() ;

在此行之后,当我尝试从用户那里获取String输入时

String choice; 
choice = user_input.nextLine() ;

它只是忽略它继续下一行。

我在从用户那里获取InputStream.skip(long) ;输入之前尝试使用String。我从here读取的内容相当于C ++的cin.ignore()

我犯的错误是什么?

哦,我也把它包括在内import java.io.InputStream;

编辑:我问我是否可以在这里使用InputStream.skip()

1 个答案:

答案 0 :(得分:0)

  
    

“它只是忽略它继续到下一行。”

  

当你说num2 = user_input.nextInt() ;你在最后按回车键(回车键),而不是与num2一起阅读,因此当你说choice = user_input.nextLine();它(返回键)被消耗时使用此方法调用,因此您会看到它忽略了您的方法调用以读取一行。

您可以通过两种方式解决此问题:

  • 您可以读取整行并在读取num2时转换为整数,如

    num2 = Integer.parseInt(user_input.nextLine());
    
  • 或者只是按下返回键,您可以添加额外的readline调用,如:

    user_input.nextLine();//consume enter key press
    choice = user_input.nextLine();