System.out.print() 读取扫描器不正确

System.out.print() reads Scanner incorrectly

我试图为我的 类 和我 运行 之一编写这个程序,但我的输出出现了问题。它应该读取我为 Scanner 输入输入的任何内容。但是,输出会跳过第一个单词,我不确定为什么。您可以忽略 main 方法中的大部分变量声明。这些仅对程序的其余部分有用。

public static void main(String[] args) {

    String fullName;
    int anniversaryM;
    int anniversaryY;
    int periodHours;

    String jobTitle;
    double payRate;
    int monthsWorked;
    double vacationHours;
    double grossPay;
    double retirement;
    double taxWithholding;
    double netPay;

    Scanner in = new Scanner(System.in); 

    fullName = inputLine(in, "Enter your full name:");
    System.out.print(fullName);
}

public static double inputNumber(Scanner input, String prompt) {

    Scanner in = new Scanner(System.in);

    in.nextDouble();
    return in.nextDouble();
}

public static String inputLine(Scanner input, String prompt) {

    Scanner in = new Scanner(System.in); 

    System.out.println(prompt);
    in.next();
    return in.next();
}

public static double calcPercentage(double grossPay, double retirement) {

    Scanner in = new Scanner(System.in);

    in.nextDouble();
    return in.nextDouble();
}

输出:

Enter your full name:
John Doe
Doe

您有两次呼叫 in.next()。只需将其删除,您就可以了。此外,请注意,您正在将 Scanner 传递给该方法,因此您不应在该方法内部创建一个新的:

public static String inputLine(Scanner input, String prompt) {
    System.out.println(prompt);
    return input.nextLine();
}

我认为你的问题是in.next(); return in.next();。在这种情况下,它会调用 reader 两次,如果你想 return in.next(); 的值,你应该把它放在一个容器中,然后 return 那个容器或者只是直走return in.next();