当前位置: 首页 > 知识库问答 >
问题:

如何使用与参数类名相同的名称添加时间偏移

扈沛
2023-03-14

我需要填写时间偏移的方法,但使用类名作为参数名,我不知道如何做到这一点我已经尝试将变量添加在一起,但我得到错误说"你不能将时间转换为int"

所以我不知道该怎么办,请尽快回复谢谢!

错误类型:

Time.java:48: error: bad operand types for binary operator '+'
       this.minutes += offset;
                    ^
  first type:  int
  second type: Time
1 error
public class Time
{
   // The values of the three parts of the time
   private int hours;
   private int minutes;
   private int seconds;

   public Time()
   {
      this.hours = 0;
      this.minutes = 0;
      this.seconds = 0;
   }

   public Time(int h, int m, int s)
   {
      this.hours = h;
      this.minutes = m;
      this.seconds = s;
   }
   
   public void add(Time offset)
   {
        // Part b: complete the add method
   }

   public String toString()
   {
      return pad(hours) + ":" + pad(minutes) + ":" + pad(seconds);
   }

   private String pad(int value)
   {
      String sign = "";
      if (value < 0)
      {
         sign = "-";
         value = -1 * value;
       }
       if (value < 10) {
          return sign + "0" + value;
       } else {
          return sign + value;
       }
    }

    public static void main(String[] args)
    {
       Time time1 = new Time(1,1,1);
       Time time2 = new Time(2,2,2);
       time1.add(time2);
       System.out.println("The result of (1,1,1).add(2,2,2) is " +
                           time1 + " and should be (03:03:03)");

       time1 = new Time(0,0,59);
       time2 = new Time(0,0,1);
       time1.add(time2);
       System.out.println("The result of (0,0,59).add(0,0,1) is " +
                           time1 + " and should be (00:01:00)");

       time1 = new Time(0,59,0);
       time2 = new Time(0,0,1);
       time1.add(time2);
       System.out.println("The result of (0,59,0).add(0,0,1) is " +
                           time1 + " and should be (00:59:01)");

       time1 = new Time(0,59,59);
       time2 = new Time(0,0,1);
       time1.add(time2);
       System.out.println("The result of (0,59,59).add(0,0,1) is " +
                           time1 + " and should be (01:00:00)");

       time1 = new Time(23,0,0);
       time2 = new Time(1,0,0);
       time1.add(time2);
       System.out.println("The result of (23,0,0).add(1,0,0) is " +
                           time1 + " and should be (00:00:00)");

       time1 = new Time(23,59,59);
       time2 = new Time(23,59,59);
       time1.add(time2);
       System.out.println("The result of (23,59,59).add(23,59,59) is " +
                           time1 + " and should be (23:59:58)");
   }
}

共有1个答案

竺鸿骞
2023-03-14

您必须将相应的时间段相加:

public void add(Time offset)
   {
        this.seconds = this.seconds + offset.seconds;
        if(this.seconds >= 60) {
            this.seconds -= 60;
            this.minutes += 1;
        }
        
        this.minutes += offset.minutes;
        if(this.minutes >= 60) {
            this.minutes -= 60;
            this.hours += 1;
        }
        
        this.hours += offset.hours;
        if(this.hours >= 24)
            this.hours -= 24;
        
       
   }
 类似资料:
  • 我想问一下java编程语言,具体到构造函数。假设我们有一个类测试,在那里我们测试整个程序,和类点,在那里定义构造函数(集和获取方法btw)。类行: 类点: 现在,如果我在构造函数中输入类点的名称,那将是一个错误:

  • 问题内容: 在我的Java应用程序中,我使用第三方库。 但是,我发现有些奇怪,有一些嵌套的程序包,有些类的名称可能与程序包的名称相同。 恐怕我不清楚。这是一个例子: 包 在“ com.xx.a”内部有一个名为“ a”的类。 因此,如果我想将此类称为“ a” … 我写: 然后,IDE将认为我的意思是软件包“ com.xx.a.a”。 那我就不能打电话了。 我想知道为什么? 顺便说一句,图书馆提供者似

  • 我得到了(超过)两个Api POSTendpoint。每一个都需要一个json作为参数。但是当我在两个endpoint参数类中使用相同的类名负载时,Swagger就不起作用了。当我改变其中的一个,例如从有效载荷到有效载荷1时,它就不起作用了。当然,我在包装类中设置了正确的名称空间,以便它找到负载。但我希望每次都使用相同的名称“有效载荷”。如何使用相同的类名负载?在这两种情况下,我都可以保留json

  • 这个问题是如何为WS设置参数的扩展。播放2.1 Java中的post() 我的Web服务请求处理程序如下 因为WSaskestHolder接受一个

  • 我有以下代码: 这段代码编译得很好,但如果我将定义移到类之外,它就不会: gcc错误消息: 叮当的错误消息: MSVC 2019错误消息: 如果它在测试中将更改为,或者如果我将重命名为其他名称,它也可以很好地编译。 你能解释一下为什么第一个版本编译而第二个版本没有编译吗?你能告诉我这个错误的标准措辞吗? 编辑:我发布了来自不同编译器的错误消息。当@cigien pointed clang trun

  • 问题内容: H2似乎在带引号的名称和不带引号的名称之间有所不同。有没有办法让他们以相同的方式对待他们? 这是我已经完成的测试: 这是查询: 我该怎么做才能使这些查询与H2一起使用? 问题答案: 根据SQL规范的要求,H2中的引号名称区分大小写。这意味着它将起作用: 但这不会: 在H2中,不带引号的名称不区分大小写。它们通常会转换为大写字母(例如在Oracle和其他数据库中)。这意味着声明 与…相同