Java не может быть применена к заданным типам string и integer - PullRequest
0 голосов
/ 11 октября 2018

Я получаю эту ошибку при компиляции, и я не уверен, почему я ее получаю или как ее исправить.

Ошибка:

RecordEvents3.java:16: error: constructor EventInformation in class EventInformation cannot be applied to given types;
   EventInformation e = new EventInformation("10:53",45);
                        ^
  required: no arguments
  found: String,int
  reason: actual and formal argument lists differ in length
1 error
class RecordEvents3 {
   public static void main (String args[]) {
      Recorder r1 = new Recorder (100,100,"Wombat Detection");
      r1.recordEvent("10:53");
      r1.recordEvent("10:59");
      r1.recordEvent("11:05");
      r1.recordEvent("12:59");
      r1.recordEvent("13:50");
      r1.recordEvent("14:06");
      r1.printEvents();
   EventInformation e = new EventInformation("10:53",45);
      System.out.println("Event recorded at " + e.eventTime +
         ", datum = " + e.eventDatum);
   }
}

class EventInformation {
   public String eventTime;
   public int eventDatum;
}


class Recorder {
   int xPos,yPos;
   String eventType;
   String [] event = new String [6];
   final int EVENT_Max = 10;

   int xevent = 0; 

   Recorder (int xPos, int yPos, String eventType ) {
      this.xPos = xPos;
      this.yPos = yPos ;
      this.eventType = eventType;
   }

   void recordEvent (String eventTime ) {
      event [xevent] = eventTime;
      xevent++;
      if (xevent > 5){
         System.out.println ("Event log overflow - terminating");
         System.exit(1);
      }
   }

   void printEvents(){
      System.out.println ("Record of " + eventType +
            " events at [" + xPos + "," + yPos + "] " );
      int index=0;
      for (String current: event) {
         if (xevent > 5){
            String ss=String.format("Event number %s was recorded at ",index);
            System.out.println(ss + current);
            index++;  
         }
      }      
   }
}

Ответы [ 3 ]

0 голосов
/ 11 октября 2018

Вам необходимо указать конструктор с соответствующими параметрами.Если в вашем классе не указан конструктор, создается конструктор по умолчанию без параметров, а ваши ссылки на поля инициализируются null.

0 голосов
/ 11 октября 2018

Вы не создали конструктор с параметром для класса EventInformation, но вы используете конструктор с аргументом в своем коде, это ваш конструктор

class EventInformation {
    public String eventTime;
    public int eventDatum;
}

вместо использования

class EventInformation {
    public String eventTime;
    public int eventDatum;

    EventInformation(String eventTime, int eventDatum) {
        this.eventTime=eventTime;
        this.eventDatum=eventDatum;
    }
}
0 голосов
/ 11 октября 2018

Вашему классу EventInformation требуется конструктор, подобный

public EventInformation(String eventTime, int eventDatum) {
   this.eventTime = eventTime;
   this.eventDatum = eventDatum;
}

Похоже, вы ожидаете, что конструкторы Java будут вести себя как Typescript.При инициализации полей вам всегда нужен явный конструктор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...