循环

时间:2017-04-09 08:37:16

标签: java

所以我对java很新,我必须在BlueJ上学一个学校。它必须是一个船舶租赁服务系统,其中一个输出必须是当天雇用所有船只的总时间(所有船只每天只雇用一次)。对于这种方法,我使用了两个类,hiredBoat和summary。我对开始和结束时间的输入是格式hhmm(int),我把对象hiredBoat放在一个数组中:

private ArrayList<hiredBoat> hiredboats;


public void addHired(int boatnumber, int starttime, int endtime, int usedfuel, boolean damage)
{
   hiredeBoat boat = new hiredBoat(boatnumber, start, end, usedfuel, damage);
    hiredBoats.add(boat);
    boatamount++;
}

在hiredBoat中,我有两种方法可以返回雇佣的小时数和雇佣的分钟数。 getHour()方法的工作原理如下,除了实际的返回int之外,getMin()完全相同:

public int getHour()
{
   endtimehour = endtime / 100;
   endtimemin = endtime % 100;
   if(endtimemin >= 60)
   {
       endtimehour++;
       endtimemin = endtimemin - 60;
   }

   starttimehour = starttime / 100;
   starttimemin = starttime % 100;
   if(starttimemin >= 60)
   {
       starttimehour++;
       starttimemin = starttimemin - 60;
   }

   totalhour = endtimehour - starttimehour ;
   totalmin = endtimemin - starttimemin;

   if(totaalmin < 0)
   {
       totalhour--;
       totalmin = 60 + totalmin;
   }

   return totalhour;
}

当我创建一个hiredBoat对象时,getHour和getMin方法可以正常工作。

我获取所有船只的总时间的方法在我的摘要对象中:

public void getTotaltimehired()
{
    totalhours = 0;
    totalminutes = 0;
    for(hiredBoat hiredBoat : hiredboats)
    {
        totalhours = totalhours + hiredBoat.getHour();
        totalminutes = totalminutes + hiredBoat.getMin();
    }

    if(totalminutes >= 60)
    {
        extrahours = totalminutes / 60;
        totalminutes = totalminutes % 60;
        totalhours = totalhours + extrahours;
    }

    System.out.println("Total time hired: " + totalhours + " uur en " + totalminutes + " minuten");
}

我遇到的一个大问题是,当我创建一个hiredBoat时,getHour()和getMin()工作正常,但是当我循环添加全部时它不会

2 个答案:

答案 0 :(得分:0)

  

当我循环添加全部时,它不会[工作]

你应该在循环中移动if语句。

int totalhours = 0;
int totalminutes = 0;

for(HiredBoat boat : hiredboats)
{
    totalhours += boat.getHour();
    totalminutes += boat.getMin();

    if(totalminutes >= 60)
    {
        int extrahours = totalminutes / 60;
        totalminutes = totalminutes % 60;
        totalhours += extrahours;
    }
}

我不太了解你的逻辑,不知道为什么它没有正确地对这些值求和。

答案 1 :(得分:0)

我看到你从未在方法中声明变量;这意味着你可能使用了在类的所有方法之间共享的字段。

尝试声明方法中可以包含的任何变量。