System.out.print()读取扫描仪错误

时间:2018-09-24 01:56:37

标签: java input output java.util.scanner system.out

我试图为我的一个班级编写该程序,但我的输出遇到了问题。它应该读取我在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();
}

输出:

  

输入您的全名:
  约翰·杜(John Doe)
  母鹿

2 个答案:

答案 0 :(得分:1)

您有两次拨打in.next()的电话。只需将其删除,就可以了。此外,请注意,您要将Scanner传递给方法,因此不应在方法内部创建新的变量:

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

答案 1 :(得分:0)

我认为您的问题是in.next(); return in.next();。在这种情况下,它将两次调用阅读器,如果您想返回in.next();的值,则应将其放入容器中并返回该容器,或者直接行进return in.next();