• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:条件分岐が多いIF分の書き方について。)

条件分岐が多いIF文の書き方について

jjon-comの回答

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.1

元のJavaソースコード中に「コード1」や「コード2(半角空白)」が登場するわけではないですよね。 一部分だけを提示してもコンパイルできないという状態でかまいませんから, 異常が起こるというそのJavaソースコードを加工なくそのままCopy&Pasteで提示していただく方がトラブルの特定は早いです。

yairi1106
質問者

お礼

if (制度コード.compareTo ("04") == 0 && 年金種類b種コード .compareTo ("01") == 0 ) { out.print ("基礎・厚生"); System.out.print ("基礎・厚生"); } else if (制度コード.compareTo ("04") == 0 && 年金種類b種コード .compareTo ("02") == 0 ) { out.print ("厚生   "); } else if (制度コード.compareTo ("04") == 0 && 年金種類b種コード .compareTo ("01") != 0 || 年金種類b種コード .compareTo ("02") != 0 ) { out.print ("基礎   "); //******************************************************************************************************************************************* } else if (制度コード.compareTo ("04") == 0 || 制度コード .compareTo ("08") != 0 || 制度コード .compareTo ("09") != 0 && 年金種類a種コード.compareTo ("01") == 0 ){ out.print ("老齢   "); System.out.print ("老齢   "); } else if (年金種類a種コード.compareTo ("02") == 0 &&制度コード.compareTo ("04") != 0 || 制度コード .compareTo ("08") != 0 || 制度コード .compareTo ("09") != 0 ){ out.print ("通算老齢 "); } else if (年金種類a種コード.compareTo ("03") == 0 && 制度コード.compareTo ("04") != 0 || 制度コード .compareTo ("08") != 0 || 制度コード .compareTo ("09") != 0 ){ out.print ("障害   "); } else if (年金種類a種コード.compareTo ("04") == 0 && 制度コード.compareTo ("04") != 0 || 制度コード .compareTo ("08") != 0 || 制度コード .compareTo ("09") != 0 ){ out.print ("遺族   "); } else if (年金種類a種コード.compareTo ("05") == 0 && 制度コード.compareTo ("04") != 0 || 制度コード .compareTo ("08") != 0 || 制度コード .compareTo ("09") != 0 ){ out.print ("寡婦   "); } else if (年金種類a種コード.compareTo ("06") == 0 && 制度コード.compareTo ("04") != 0 || 制度コード .compareTo ("08") != 0 || 制度コード .compareTo ("09") != 0 ){ out.print ("かん夫  "); } else if (年金種類a種コード.compareTo ("07") == 0 && 制度コード.compareTo ("04") != 0 || 制度コード .compareTo ("08") != 0 || 制度コード .compareTo ("09") != 0 ){ out.print ("遺児   "); } else if (年金種類a種コード.compareTo ("07") == 0 && 制度コード.compareTo ("04") != 0 || 制度コード .compareTo ("08") != 0 || 制度コード .compareTo ("09") != 0 ){ out.print ("遺児   "); } else if (年金種類a種コード.compareTo ("08") == 0 && 制度コード.compareTo ("04") != 0 || 制度コード .compareTo ("08") != 0 || 制度コード .compareTo ("09") != 0 ){ out.print ("特例老齢 "); } else if (年金種類a種コード.compareTo ("09") == 0 && 制度コード.compareTo ("04") != 0 || 制度コード .compareTo ("08") != 0 || 制度コード .compareTo ("09") != 0 ){ out.print ("通算遺族 "); } else if (年金種類a種コード.compareTo ("10") == 0 && 制度コード.compareTo ("04") != 0 || 制度コード .compareTo ("08") != 0 || 制度コード .compareTo ("09") != 0 ){ out.print ("特例遺族 "); } else if (年金種類a種コード.compareTo ("11") == 0 && 制度コード.compareTo ("04") != 0 || 制度コード .compareTo ("08") != 0 || 制度コード .compareTo ("09") != 0 ){ out.print ("養老   "); } else if (年金種類a種コード.compareTo ("12") == 0 && 制度コード.compareTo ("04") != 0 || 制度コード .compareTo ("08") != 0 || 制度コード .compareTo ("09") != 0 ){ out.print ("母子   "); } else if (年金種類a種コード.compareTo ("13") == 0 && 制度コード.compareTo ("04") != 0 || 制度コード .compareTo ("08") != 0 || 制度コード .compareTo ("09") != 0 ){ out.print ("準母子  "); } else if (年金種類a種コード.compareTo ("14") == 0 && 制度コード.compareTo ("04") != 0 || 制度コード .compareTo ("08") != 0 || 制度コード .compareTo ("09") != 0 ){ out.print ("障害基礎 "); } else if (年金種類a種コード.compareTo ("15") == 0 && 制度コード.compareTo ("04") != 0 || 制度コード .compareTo ("08") != 0 || 制度コード .compareTo ("09") != 0 ){ out.print ("遺族基礎 "); } else if (制度コード.compareTo ("03") == 0 && 年金形態表示.compareTo ("4") != 0){ out.print ("老齢   "); } else if (年金コード.substring(0,2).compareTo ("01") == 0 && 制度コード.compareTo ("08") == 0 || 制度コード.compareTo ("09") == 0 ) { out.print ("退職  "); } else if (年金コード.substring(0,2).compareTo ("02") == 0 && 制度コード.compareTo ("08") == 0 || 制度コード.compareTo ("09") == 0 ) { out.print ("通算退職"); } else if (年金コード.substring(0,2).compareTo ("03") == 0 && 制度コード.compareTo ("08") == 0 || 制度コード.compareTo ("09") == 0 ) { out.print ("障害  "); } else { out.print(" ");} }

yairi1106
質問者

補足

お礼のほうにコードを記載したのですが 書ききれないのですべて記載してないです。 因みに//*********************より したが反応しなく それ以外の条件は すべて out.print ("基礎   "); の結果になってます。

関連するQ&A

  • 条件分岐が多いIF分の書き方について_2

    if (制度コード.compareTo ("08") == 0 && 旧共済従前額保障表示 .compareTo ("1") == 0) { out.print ("*"); } else if (制度コード.compareTo ("09") == 0 && 上乗有無表示 .compareTo ("1") == 0 && 上乗従前額保障表示 .compareTo ("1") == 0) { out.print ("*"); } else if (制度コード.compareTo ("09") == 0 && 独自有無表 .compareTo ("1") == 0 && 独自従前額保障表示 .compareTo ("1") == 0) { out.print ("*"); } else { out.print(" ");} } この条件の中に 新たな条件の ただし共通退職時共済識別表示が4の場合だけout.print (" ");とするを 加えたいのですが 普通に加えると 反応しません。 過去の投稿のアドバイスから色々と試したのですが どなたかアドバイスお願い致します。 } else if ( 共通退職時共済識別表示.compareTo ("4") == 0) { out.print (" ");

    • ベストアンサー
    • Java
  • switchの中にIF分の条件分岐について

    int lot2 = Integer.valueOf(年金コード).intValue(); switch (lot2) { case 1: if( (制度コード.compareTo("08")==0) || (制度コード.compareTo("09")==0) && 旧共済退職年金減額該当表示.compareTo("0")==0 ){ out.print("退職  ");break;} case 2: if( (制度コード.compareTo("08")==0) || (制度コード.compareTo("09")==0)){ out.print ("通算退職");break;} 上記のコードは 年金コードが1の場合 制度コード8なおかつ9または旧共済退職年金減額該当表示が0のとき"退職  "を表示 年金コードが2の場合 制度コード8なおかつ9のとき"通算退職"を表示するコードになります。 このコードの条件に下記のコード } else if ( (制度コード.compareTo("08")==0) || (制度コード.compareTo("09")==0)&& 旧共済退職年金減額該当表示.compareTo("1")==0 ){ out.print ("減額退職"); 年金コードが1の場合 制度コード8なおかつ9または旧共済退職年金減額該当表示が1のとき"減額退職"を表示 とcase 1の中で 旧共済退職年金減額該当表示が1と0で条件判定したいのですが スイッチ文の中のcase 1を複数使用したい場合 どのようにすれば良いのでしょうか? どうぞよろしくお願いします。

    • ベストアンサー
    • Java
  • 条件分岐(if)について

    条件分岐(if)についてお聞きしたことがあります。 例えば if($a == 'A' || $a == 'B'){ 処理 }else if($a == 'C' || $a == 'D' || $a == 'E'){ 処理 }............... といった条件分岐があったとて、お聞きしたいことが2点あります。 ・条件分岐この後も数十個続いたとします。その場合もelse ifで一つ一つ 条件を書かなければならないのでしょうか? ・条件式if($a == 'A' || $a == 'B'....)が長くなる場合プログラムが見にくくなるので 別途に条件式を書いておいてif文の所では($a == ◯)といったように簡潔に書くことは できないのでしょうか? 宜しくお願いします。

    • ベストアンサー
    • PHP
  • if分岐が上手くいかない。

    if分岐が上手くいかない。 お世話になっております。 基本的なif分岐だと思うのですが、 なぜ動かないのか、どうしても理解できずにいます。 目的は勤務表の作成で、 数値型で取得している外出時間(例.1時間15分⇒1.25) この分の部分を、 0分なら0,(1時間0分⇒1.0なのでそのまま)、 1分から30分までは30分扱い、(0.01⇒0.5,1.01⇒1.5) 31分から60分までは1時間扱い、(0.51⇒1.0,0.9⇒1.0) と、判断する部分を書いているのですが、 何故か分岐が上手くいきません。 下記のように、時間を一度文字列型に変換し、 小数点を条件に分割、 分割した分の部分を数値型にし、その値で比較する。 そんなソースを書いているのですが、 常に1の分岐に入ってしまうのです。 更に1.0時間など、0の分岐を追加するとエラーとなり動きません。 基本的なif分岐だとは思うのですが なぜ上手く行かないのか、 自力でどうしても解決できず相談致します。 よろしくお願いします。 temp = 1.75; alert(temp + "この数字は1時間45分数値型"); //外出時間に関しては、小数部分を0.5単位で切り上げる str = new String(temp); tempstr = str.split('.'); alert(tempstr[0] + "外出時間、HH"); hun_str = tempstr[1].substring(0,2); alert(hun_str + "外出時間、MI"); //hun_strを数値型に hun_int = hun_str - (-0); alert(hun_int + "外出時間、MI(この値で判定)"); if( 0 < hun_int <= 50 ){  //分岐1  alert("1分以上、30分以下。0.5時間とする。"); }else if( hun_int > 50){  //分岐2  alert("30分以上は1時間扱い"); }

  • ifでの条件分岐

    .net vb2005でプログラミングしています。 2つのテキストボックスがあり、その名前をtextbox1,textbox2 , 変数の代入をtx1、tx2とします。 どちらも半角数字で300までしか入力できません。 さらに、tx1に入力されるとtx2も必ず入力される必要があります。 tx1が未入力の場合はtx2も未入力である必要があります。 最初にtx1の文字数が0か確認し、入っている場合、居ない場合と ifで条件分岐させましたが うまくいきません。。 アドバイスいただきたいと思います。 Dim tx1,tex2 As Integer If Len(TextBox1.Text) = 0 Then flg = 0 ElseIf Regex.IsMatch(TextBox1.Text, "^[0-9]{1,3}$") Then tx1= Val(TextBox1.Text) tx1 = Convert.ToInt32(iptx5) '文字列をInteger型(数字型)に変換 Else MsgBox("300までの数字で入力して下さい", vbCritical, "入力エラー") TextBox1.Clear() Exit Sub End If If tx1 > 255 Then flg = 1 MsgBox(ipm_msg2, vbCritical, "入力エラー") TextBox1.Clear() End If '********************************************************************** If Len(TextBox1.Text) = 0 Then flg = 0 exit sub ElseIf Regex.IsMatch(TextBox2.Text, "^[0-9]{1,3}$") Then tx2 = Val(TextBox2.Text) tx2 = Convert.ToInt32(tex2) Else MsgBox(ipm_msg1, vbCritical, "入力エラー") TextBox2.Clear() Exit Sub End If '**255以上なら入力不可** If iptx6 > 255 Then flg = 1 MsgBox(ipm_msg2, vbCritical, "入力エラー") TextBox6.Clear() Exit Sub End If

  • if文の条件分岐

    お世話になっております。 VBについて初心者なので、参考書を見て勉強しております。 if文の条件分岐についてイメージが出来なくて困っています。 例えば、 (1)Windows XPのインストールのVBS、パラメーター用のbat (2)Windows VistaのインストールのVBS、パラメーター用のbat があるとします。 if文を使って、VBSを開いた時に(1)か(2)の分岐を選択するように書くには「if・・・Then・・・Else」を使って書くのが良いのでしょうか? 勉強不足で自己解決ができません・・・ 宜しく御願いします。

  • 文字数カウント(ifで分岐)

    文字数を数えて分岐させたいと思い以下のようにしました。 if ((length($NAIYOU)) < 32){ &ok; } else { &ng; } OKの場合はすんなりいきますが、NGの場合がエラー(Internal Server Error)になります。 何がダメなのでしょうか?

    • ベストアンサー
    • CGI
  • 【Excel2003VBA】セルの文字で条件分岐

    基本的な質問で恐縮ですが、Excel2003のVBAで条件分岐をするときの方法について質問です。 例えば、A1に文字列の「当選」と「あたり」があった場合は、真の処理を、それ以外の場合は偽の処理をする場合は条件式にどのように書けば良いのでしょうか? 次の【条件式】に入る書き方を教えてください。 sub 条件分岐()   If 【 条件式 】 Then     真の場合   Else     偽の場合 End sub

  • 文字列で条件分岐 if swtich

    C言語でifやswitch文の条件式でキーボード入力からの複数文字列(char型)に対して条件分岐をしたいのですが、どなたか具体例を教えていただけないでしょうか?またscanfでキーボード入力を読み込む場合、Enterを押さないと実行されませんが、Enterを押さないでもいい関数や方法があれば教えて下さい。宜しくお願いします。

  • 条件分岐

    以下の条件分岐について教えてください。 条件:str の 文字に ”0.0”や”0000”などの入力があっ   た場合、NG_FLAGを返したいのです。 どこがいけないのか、教えてください。 int CheckData2(char *str) {  if (str[0] == '0');{   printf("%c", str[0]);   if (str[0] == '0' && str[1] == '.'){    puts("CheckData2はOK_FLAG");    return OK_FLAG;   } else if (str[0] == '0' && str[1] == '.'){    puts("CheckData2はNG_FLAG;");   return NG_FLAG; } } puts("CheckData2はOK_FLAG"); return OK_FLAG; }