1週間以上タスクを実行する個人の開始時間と終了時間のリストがあります。2次元配列データをJavaで操作する方法
タスクを変更すると、新しいエントリが作成されます。
この情報は2D配列に格納されています。 - 私はこの配列をループし、別の配列にデータを格納したいと思います。
新しい2D配列では、特定の日に人を表示する行が必要です。だから、
最初の配列に格納場合:(アウト人、日、中、合計)
{{"John","Mon","08:00","12:00","4.00"},
{"John","Mon","12:00","17:00","5.00"},
{"John","Tue","08:00","17:00","9.00"},
{"Mike","Tue","08:00","11:00","3.00"}
{"Mike","Tue","11:00","17:00","6.00"}};
私は二番目の配列を格納したい:
{{"John","Mon","08:00","17:00","9.00"},
{"John","Tue","08:00","17:00","9.00"},
{"Mike","Tue","08:00","17:00","9.00"}};
はここで、これまでに私のコードです:
public class CompArrayTest {
public static void main(String args[]){
String[][] End = new String [5][5];
String[][] Start = {{"John","Mon","08:00","12:00","4.00"},
{"John","Mon","12:00","17:00","5.00"},
{"John","Tue","08:00","17:00","9.00"},
{"Mike","Tue","08:00","11:00","3.00"},
{"Mike","Tue","11:00","17:00","6.00"}};
//print start
for(int i = 0; i<Start.length; i++){
for(int j = 0; j<Start.length; j++){
System.out.print(Start[i][j]+" ");
}//j end
System.out.print("\n");
}//i end
//change end
for(int i = 0; i<Start.length; i++){
String name = Start[i][0];
String day = Start[i][1];
String In = Start[i][2];
String Out = Start[i][3];
String Total = Start[i][4];
//look through End
for(int j = 0; j<5; j++){
String eN= End[j][0];
String eD= End[j][1];
if(eN==name && eD==day){
//change end time
End[j][3]=Start[i][3];
//parse and add times
double TS = Double.parseDouble(Start[i][4]);
double TE = Double.parseDouble(End[i][4]);
double ans = TS + TE;
String ANS = ans+"";
End[j][4]= ANS;
} else {
End[j][0] = name;
End[j][1] = day;
End[j][2] = In;
End[j][3] = Out;
End[j][4] = Total;
}//else end
}//j end
System.out.print("\n");
}//i end
//print end
for(int i = 0; i<Start.length; i++){
for(int j = 0; j<Start.length; j++){
System.out.print(End[i][j]+" ");
}//j end
System.out.print("\n");
}//i end
}//main end
もっと簡単な方法は、おそらく "Employee"のクラスを作成することです。メンバ変数の名前、時間の出入り、時間は – ragingasiancoder