2017-04-09 28 views
-1

所以我對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()方法的工作原理是這樣的getMin()是精確的,除了實際的回報INT相同:

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

的getHour和getMin方法,他們應該在工作的時候創建一個hiredBoat對象。

我的方法來獲得被僱傭是我的總結對象中的所有船的總時間:

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

提示:閱讀關於java命名約定。類名起始於UpperCase;總是。 – GhostCat

+1

除此之外:尋求調試幫助的問題(「爲什麼這個代碼不工作?」)必須包含所需的行爲,特定的問題或錯誤以及在問題本身中重現問題所需的最短代碼。沒有明確問題陳述的問題對其他讀者無益。請參閱:如何創建[mcve]。將您的問題恢復到可以編譯和執行的最低限度;並在此給予。作爲「但是當我循環添加全部它不」不是一個描述,我們可以幫助! – GhostCat

回答

0

當我循環添加了所有它不[工作]

你或許應該移動,如果STA循環內的裝飾。

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

我不完全理解你的邏輯,看看爲什麼它不能正確地求和值。

+0

你最後一段是爲什麼決定不回答這個問題:-) – GhostCat

0

我看到你永遠不會在方法中聲明變量;這意味着你可能使用了在類的所有方法之間共享的字段。

嘗試聲明可以在該方法中的任何變量。