System.out.print () неправильно читает сканер - PullRequest
0 голосов
/ 24 сентября 2018

Я пытался закодировать эту программу для одного из моих классов, и у меня возникла проблема с выводом.Предполагается прочитать все, что я набрал для ввода 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();
}

Вывод:

Введите ваше полное имя:
Джон Доу
Доу

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

Я думаю, что ваша проблема - in.next(); return in.next();.в этом случае он будет вызывать считыватель два раза, если вы хотите вернуть значение in.next();, вы должны поместить его в контейнер и вернуть этот контейнер или просто идти прямо return in.next();

0 голосов
/ 24 сентября 2018

У вас есть двойной звонок на in.next().Просто удалите его, и вы должны быть в порядке.Кроме того, обратите внимание, что вы передаете Scanner методу, поэтому вы не должны создавать новое внутри метода:

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