Java 获取精确的int和字符串输入

Java 获取精确的int和字符串输入,java,input,io,user-input,java.util.scanner,Java,Input,Io,User Input,Java.util.scanner,在读取int之后,我很难从用户处读取字符串。基本上,我必须从用户处获取int,然后是几个字符串。我可以成功地获取用户的int。但是,当我开始询问字符串(作者、主题等)时,我的扫描仪会“跳过”第一个字符串输入 例如,我的输出如下所示: 输入您的选择: 2. 输入作者: 输入主题: 主题 如您所见,用户永远无法输入作者,而我的扫描程序将null存储到作者字符串中 以下是生成上述输出的代码: String author; String subject; int choice;

在读取int之后,我很难从用户处读取字符串。基本上,我必须从用户处获取int,然后是几个字符串。我可以成功地获取用户的int。但是,当我开始询问字符串(作者、主题等)时,我的扫描仪会“跳过”第一个字符串输入

例如,我的输出如下所示: 输入您的选择: 2. 输入作者: 输入主题: 主题

如您所见,用户永远无法输入作者,而我的扫描程序将null存储到作者字符串中

以下是生成上述输出的代码:

    String author;
    String subject;
    int choice;
    Scanner input = new Scanner(System.in);

    System.out.println("Enter choice:");
    choice = input.nextInt();
    System.out.println("Enter author:");
    author = input.nextLine();
    System.out.println("Enter subject:");
    subject = input.nextLine();
任何帮助都将不胜感激。非常感谢。
-普雷斯顿·多诺万(Preston Donovan)

问题在于,当您使用
readLine
时,它会从上次读取的标记读取到包含该标记的当前行的末尾。它不会自动移动到下一行,然后读取整行

一致地使用
readLine
,并在适当的情况下将字符串解析为整数,或者添加对
readLine
的额外调用:

System.out.println("Enter choice:");
choice = input.nextInt();

input.nextLine(); // Discard the rest of the line.

System.out.println("Enter author:");
author = input.nextLine();
这很好用。 尽管在制作之前的类似于下面的程序时,它不是必需的。有人能解释一下吗

 import java.util.Scanner;

 public class Average Marks {

 public static void main(String[] args) {
  Scanner s = new Scanner ( System.in);
  System.out.print("Enter your name: ");
  String name=s.next();
  System.out.print("Enter marks in three subjects: ");
  int marks1=s.nextInt();
  int marks2=s.nextInt();
  int marks3=s.nextInt();
  double average = ( marks1+marks2+marks3)/3.0;
  System.out.println("\nName: "+name);
  System.out.println("Average: "+average);