BJP4 Упражнение 3.20: inputBirthday - PullRequest
0 голосов
/ 12 марта 2019

Напишите метод inputBirthday, который принимает сканер для консоли в качестве параметра и предлагает пользователю ввести месяц, день и год рождения, а затем печатает дату рождения в подходящем формате. Вот пример диалога с пользователем:

Мне нужно принять этот ввод, как это-

В какой день месяца ты родился? 8
Как называется месяц, в котором вы родились? Май
В каком году вы родились? 1981

вывод должен быть таким:

Вы родились 8 мая 1981 года. Вы очень старый!

i'm getting this kind of error

but this code works fine in intellij

public static void main(String[] args) {

    inputBirthday();
}


  public static void inputBirthday() {
      Scanner abc = new Scanner(System.in);
      System.out.println("On what day of the month were you born? ");
      int inputDay = abc.nextInt();
      System.out.println("What is the name of the month in which you were born? ");
      String inputMonth = abc.next();
      System.out.println("During what year were you born? ");
      int inputYear = abc.nextInt();
      System.out.println("You were born on " + inputMonth + " " + inputDay + "," + " " + inputYear + "." + " You're mighty old!");
}

Ответы [ 2 ]

0 голосов
/ 12 марта 2019
public static void main(String[] args) {

    Scanner in = new Scanner(System.in);
    // either instantiate the enclosing class, or make inputBirthday static
    inputBirthday(in);
    }

  public static void inputBirthday(Scanner abc)
 {
    System.out.print("On what day of the month were you born? ");
    int inputDay = abc.nextInt();
    System.out.print("What is the name of the month in which you were born? ");
    String inputMonth = abc.next();
    System.out.print("During what year were you born? ");
    int inputYear = abc.nextInt();
    System.out.println("You were born on " + inputMonth + " " + inputDay + "," + " " + inputYear + "." + " You're mighty old!");
    }

наконец-то все заработало и код прошел все тесты

результаты тестов

0 голосов
/ 12 марта 2019

Я считаю, что проблема заключается в том, что в требованиях конкретно указано, что вы должны написать метод с именем inputBirthday, который принимает объект Scanner. Вы написали main метод, а затем метод inputBirthday, который принимает String, int, int.

Переместите код из метода main в метод inputBirthday, избавьтесь от создания экземпляра сканера и измените метод inputBirthday, чтобы принять сканер (возможно, inputBirthday(Scanner abc).

Код, как написано, работает в intellij, потому что это полная программа. Но для сайта они ожидают определенного метода подписи. Этот подход не отличается от того, что ожидают leetcode или другие подобные он-лайн кодовые места.

ФП внес изменения, но опять же требования предусматривают, что подход должен выглядеть примерно так:

public void inputBirthday(Scanner abc) {
    System.out.println("On what day of the month were you born? ");
    int inputDay = abc.nextInt();
    System.out.println("What is the name of the month in which you were born? ");
    String inputMonth = abc.next();
    System.out.println("During what year were you born? ");
    int inputYear = abc.nextInt();
    System.out.println("You were born on " + inputMonth + " " + inputDay + "," + " " + inputYear + "." + " You're mighty old!");
}

Итак, еще раз:

  • получить сигнатуру метода, соответствующую требованию (неясно, должен ли он быть статическим, поэтому может потребоваться public static inputBirthday(Scanner abc)).
  • Не запускайте сканер методом inputBirthday.

Для тестирования из IDE:

public static void main(String[] args) {
  Scanner in = new Scanner(System.in);
  // either instantiate the enclosing class, or make inputBirthday static
  inputBirthday(in);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...