簡単な配列の作り方
やりたいことがあるのですが、原始的なやり方しか思いつきません。
簡単な方法があればご教授願いたく思い質問いたしました。
よろしくお願いします!
<やりたいこと>
明細行が5件ありまして、それぞれの行に有効かどうかフラグがある。
5件のうち有効になっている数だけの配列を作成する。
---------------------------------------------
例1)1,2,3,4,5のうち2,3,5の3行が有効の場合
String[] str = String[]{2,3,5}
例2)1,2,3,4,5のうち4の1行が有効の場合
String[] str = String[]{4}
---------------------------------------------
<現在やっていること>
// 有効行の判断用
private boolean yukoFlg1 = false;
private boolean yukoFlg2 = false;
private boolean yukoFlg3 = false;
private boolean yukoFlg4 = false;
private boolean yukoFlg5 = false;
// 有効行の数
private long yukoCnt = 0;
/**
* 該当行分の配列にする String[]
* @param str 配列にしたい値
*/
public String[] setStrArray (
String str1,
String str2,
String str3,
String str4,
String str5)
throws Exception
{
String[] result = null;
// 有効行の数が1の場合
if (yukoCnt == 1) {
if (yukoFlg1) {
result = new String[]{str1};
} else if (yukoFlg2) {
result = new String[]{str2};
} else if (yukoFlg3) {
result = new String[]{str3};
} else if (yukoFlg4) {
result = new String[]{str4};
} else {
result = new String[]{str5};
}
// 有効行の数が2の場合
} else if (yukoCnt == 2) {
if (yukoFlg1) {
if (yukoFlg2) {
result = new String[]{str1, str2};
} else if (yukoFlg3) {
result = new String[]{str1, str3};
} else if (yukoFlg4) {
result = new String[]{str1, str4};
} else {
result = new String[]{str1, str5};
}
} else if(yukoFlg2) {
if (yukoFlg3) {
result = new String[]{str2, str3};
} else if (yukoFlg4) {
result = new String[]{str2, str4};
} else {
result = new String[]{str2, str5};
}
} else if (yukoFlg3) {
if (yukoFlg4) {
result = new String[]{str3, str4};
} else {
result = new String[]{str3, str5};
}
} else {
result = new String[]{str4, str5};
}
// 有効行の数が3の場合
} else if (yukoCnt == 3){
if (yukoFlg1) {
if (yukoFlg2) {
if (yukoFlg3) {
result = new String[]{str1, str2, str3};
} else if (yukoFlg4) {
result = new String[]{str1, str2, str4};
} else {
result = new String[]{str1, str2, str5};
}
} else if (yukoFlg3) {
if (yukoFlg4) {
result = new String[]{str1, str3, str4};
} else {
result = new String[]{str1, str3, str5};
}
} else {
result = new String[]{str1, str4, str5};
}
} else if (yukoFlg2) {
if (yukoFlg3) {
if (yukoFlg4) {
result = new String[]{str2, str3, str4};
} else {
result = new String[]{str2, str3, str5};
}
}
} else {
result = new String[]{str3, str4, str5};
}
// 有効行の数が4の場合
} else if (yukoCnt == 4) {
if (!yukoFlg1) {
result = new String[]{str2, str3, str4, str5};
} else if (!yukoFlg2) {
result = new String[]{str1, str3, str4, str5};
} else if (!yukoFlg3) {
result = new String[]{str1, str2, str4, str5};
} else if (!yukoFlg4) {
result = new String[]{str1, str2, str3, str5};
} else {
result = new String[]{str1, str2, str3, str4};
}
// 有効行の数が5の場合
} else {
result = new String[]{str1, str2, str3, str4, str5};
}
return result;
}
お礼
軽いフットワークに脱帽ですが、 今の私ではこれを理解するのに時間がかかりそうです、 オライリーの本のように時間をかけて理解していきます。 ありがとうございました。