首页 > 解决方案 > Java 不能应用于给定类型的字符串和整数

问题描述

我在编译时遇到了这个错误,我不确定为什么会得到它或如何修复它。

错误是:

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++;  
         }
      }      
   }
}

标签: javaarraysstring

解决方案


您的 EventInformation 类需要一个构造函数,例如

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

看起来您期望 Java 构造函数的行为类似于 Typescript 构造函数。初始化字段时总是需要显式构造函数。


推荐阅读