2017-04-09 7 views
-1

だから私はかなりJavaに新しいので、私はBlueJで学校の練習をしなければならない。ボート雇用のためのシステムでなければならず、出力の1つは、その日にすべてのボートが雇われた合計時間でなければなりません(すべてのボートは1日1回しか雇われません)。このメソッドでは、hiredBoatとsummaryという2つのクラスを使用しています。開始時刻と終了時刻のための私の入力はフォーマットHHMM(int型)であり、私は、配列内のオブジェクトhiredBoatを置く: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++; 
} 

は私が雇わ雇わ時間と分の量を返すには2つの方法があります。 getHour()メソッドは次のように機能し、getMin()は正確な実際の戻りint型以外は同じである:私はhiredBoatオブジェクトを作成するときに

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方法は、彼らが必要として働いています。

私の方法は、私の要約対象である雇用されているすべてのボートの合計時間を取得します

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

私はあなたが決してメソッドで変数を宣言していないことを知ります。つまり、クラスのすべてのメソッド間で共有されるフィールドを使用している可能性があります。

メソッドで使用できる変数を宣言してください。

関連する問題