所以我对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()工作正常,但是当我循环添加全部时它不会
答案 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)
我看到你从未在方法中声明变量;这意味着你可能使用了在类的所有方法之间共享的字段。
尝试声明方法中可以包含的任何变量。