首页 > 解决方案 > 在java中从键盘获取多行然后单个字符

问题描述

我输入:

然后会发生什么,循环再次发生,但您不能再次输入your first and last name

String name = s.nextLine();循环执行一次后,似乎总是空行。

这是为什么?

代码:

Scanner s = new Scanner(System.in);

do {
    System.out.printl('Enter your first and last name:');
    String name = s.nextLine();

    System.out.printl('Enter your job description:');
    String job = s.nextLine();

    System.out.println("Press Y for loop ..");
    char answer = s.next().charAt(0);
} while(answer == 'Y');

标签: javajava.util.scanner

解决方案


System.out.printl()应该System.out.println()

您应该对字符串使用双引号。

 System.out.printl('Enter your first and last name:');//<----single quote

变量answer超出范围,因为在 java 中,范围仅限于 {}. answer在循环之前声明do-while(在顶部)。

而不是使用char answer = s.next().charAt(0);,使用answer = s.nextLine().charAt(0);

有关更多信息,请检查Scanner 在使用 next() 或 nextFoo() 后是否跳过了 nextLine()?

这是您修改后的代码:

    public static void main(String[] args) {
    Scanner s = new Scanner(System.in);
    char answer; //<----declare the variable here 

do {
    System.out.println("Enter your first and last name:"); //<---use double quotes
    String name = s.nextLine();

    System.out.println("Enter your job description:");//<---use double quotes
    String job = s.nextLine();

    System.out.println("Press Y for loop ..");
    answer = s.nextLine().charAt(0); //<---use nextLine() here 
}while(answer == 'Y');
}

推荐阅读