Java扫描程序完全绕过字符串输入

时间:2015-10-21 09:58:49

标签: java

我的部分代码存在一些问题。

if (option1 == 1){
   //Add Movie
   System.out.print('\u000C');
   System.out.println(">>Add Movie<<");
   System.out.println("");
   System.out.print("Title: ");
   String title = scan.nextLine();
   System.out.print("Year: ");
   int year = scan.nextInt();
}

当我执行代码时,它打印出来,

Title: Year: 

完全跳过scan.nextLine();所以我无法为它提供任何意见。

有没有人知道为什么会这样做?

修改

我已经设法解决了这个问题。原来是scan.nextLine();错误,并且没有完全移动到新行。谢谢大家:)

3 个答案:

答案 0 :(得分:0)

也许在此代码之前有一个next()系列

input.nextInt();
input.next();

input.next....(); //Excluding input.nextLine()

不会消耗额外的换行符,而且会占用您的声明

String title = scan.nextLine();

要解决此问题,您可以在这些代码之前添加额外的nextLine()

所以这段代码应该可行

scan.nextLine(); //Consume extra new line
System.out.print("Title: ");
String title = scan.nextLine();
System.out.print("Year: ");
int year = scan.nextInt();

答案 1 :(得分:0)

对我而言,代码工作正常 -

Scanner scan=new Scanner(System.in);
    System.out.print("title: ");
    String title=scan.nextLine();

    System.out.print("year: ");
    int year=scan.nextInt();
    System.out.println("title is: "+title+" and year is: "+year);

我得到的输出是这个 -

title: king
year: 2015
title is: king and year is: 2015

答案 2 :(得分:-1)

这段代码。

Scanner scan=new Scanner(System.in);
System.out.print("Title: ");
String title = scan.nextLine();