Как написать вызов или метод в качестве регулярного выражения в моем коде Java? - PullRequest
0 голосов
/ 28 июня 2019

Моя домашняя задача: создайте класс с именем «Аренда» с полями, в которых будут указаны имя арендатора квартиры, номер квартиры, месячная сумма арендной платы и срок аренды в месяцах.Включите конструктор, который инициализирует имя «XXX», номер квартиры - 0, арендную плату - 1000, а срок - 12. Кроме того, включите методы для получения и установки каждого из полей.Включите нестатический метод с именем addPetFee (), который добавляет 10 долларов США к ежемесячной стоимости аренды и вызывает статический метод с именем объяснение объяснения платы за содержание домашних животных объяснять следующим образом: Плата за домашних животных в размере 10 долларов США добавляется к ежемесячной арендной плате.

Создайте класс с именем TestLease, метод main () которого объявляет четыре объекта Lease.Вызовите метод getData () три раза.Внутри метода попросите пользователя ввести значения для каждого поля для аренды и вернуть объект аренды в метод main (), где он назначен одному из объектов аренды main ().Не запрашивайте у пользователя значения для четвертого объекта Lease, но оставьте в нем значения по умолчанию.Затем в main () передайте один из объектов Lease методу showValues ​​(), который отображает данные.Затем вызовите метод addPetFee (), используя переданный объект Lease, и убедитесь, что отображается объяснение комиссии.Затем снова вызовите метод showValues ​​() для объекта Lease и убедитесь, что плата за питомца была добавлена ​​к арендной плате.Наконец, вызовите метод showValues ​​() для каждого из трех других объектов;убедитесь, что два содержит значения, которые вы указали в качестве входных данных, и одно содержит значения по умолчанию конструктора.

Я завершил кодирование для обоих классов, и все это прекрасно работает!К сожалению, я получил сообщение об ошибке.Мне нужна помощь с этим одним сообщением об ошибке.Может быть, кто-то может помочь мне понять.

Мой код и сообщение об ошибке ниже:

   ''' getData(leaseOne);
    '''getData(leaseTwo);
    '''getData(leaseThree);


  '''  public static Lease getData(Lease l){

  '''      Scanner input = new Scanner(System.in);

  '''      System.out.println("Enter Tenant's Name: ");
   '''     String name = input.nextLine();
   '''     l.setName(name);

    '''    System.out.println("Enter Apartment Number: ");
    '''    int aptNumber = input.nextInt();
    '''    l.setAptNumber(aptNumber);

    '''    System.out.println("Enter Amount of Rent: ");
    '''    double rent = input.nextDouble();            
    '''    l.setRent(rent);

     '''   System.out.println("Enter Term of Lease: ");
     '''   int term = input.nextInt();
     '''   l.setTerm(term);

     '''   return l;
  '''  }

Вот что мне объяснила система оценки домашних заданий:

КодPatternIncomplete TestLease содержит вызовы для getData

Описание Выполнил поиск в вашем коде определенного шаблона:

getData (символ обратной косой черты здесь) ((символ обратной косой черты здесь));

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

Я уже создал все остальное, как указано в инструкцияхВсе остальное прошло.

Ответы [ 3 ]

2 голосов
/ 28 июня 2019

Система оценок сообщает вам, что в вашем коде нет строк, соответствующих регулярному выражению getData\(\) .Это отчасти подразумевает, что со словами «конкретный образец», но я виню систему оценок за то, что не упомянул «регулярное выражение» миров в этом сообщении.

В регулярных выражениях круглые скобки - это специальные символы со специальным значением,Чтобы шаблон соответствовал фактическому символу в скобках, шаблон должен предпринять шаги для защиты или «экранирования» этого символа.Наиболее распространенный способ сделать это - поставить перед специальным символом обратную косую черту, которая действует как escape-символ, то есть это означает, что следующий символ следует рассматривать как буквальный символ, игнорируя любое специальное значение, которое оно обычно может иметь.

Итак, getData\(\) - это регулярное выражение, которое соответствует любому вхождению «getData ()» в любом тексте, к которому он применяется (в данном случае, в вашем коде).

Обратите внимание, что «forwardкосая черта наклоняется вправо (/), а обратная косая черта наклоняется влево (\).Обратная косая черта - это специальный символ в регулярных выражениях, а прямая косая черта - нет (по крайней мере, в Java; некоторые другие языки используют его в качестве разделителя).

1 голос
/ 28 июня 2019

В чем проблема

В сообщении об ошибке говорится, что оно выполняет поиск буквально getData() вызовов, то есть вызовов методов без аргументов. Ваши звонки содержат аргумент Lease, например getData(leaseOne).

Что это за странные обратные слеши в getData\(\)?

Обратная косая черта просто помещается туда, чтобы экранировать (, который является специальным символом для шаблонов регулярных выражений. Таким образом, регулярное выражение просто ищет строку getData(), \ просто уходит, чтобы найти символ ( как есть.

Как исправить

Вы должны сделать так, чтобы ваш getData() метод не принимал аргументов.

Теперь метод static и принимает Lease объект в качестве аргумента. Я предлагаю сделать его методом экземпляра (т.е. не static), чтобы он мог обращаться к Lease объектным методам как к методам this.

0 голосов
/ 28 июня 2019

Это довольно ясно, я думаю.Ваше задание определенно требует, чтобы вы «вызывали метод getData () три раза».

Ваша система аттестации в университете не нашла три вызова getData ().

Проблема в том, что вы 'мы написали getData (Lease l) и назвали его трижды, но вы должны были создать getData (), который создает внутри 'new Lease' и возвращает вместо него объект 'Lease'.

Так что вам придется написать что-то вроде

public static Lease getData(){
    Lease l = new Lease();
    // Whatever code
    return l;
}

Трижды вызовите вышеуказанный метод.

...