• ベストアンサー

if文が通りません。。。

ちょっと急ぎです。 DBからデータを取ってきて表示させるだけなんですが、なぜか上手くいかないので教えてください。 問題は、DBからデータ(String)を持ってきて値がnullのとき if(a == null) { a = "0"; } って処理をさせているんですが、このif文通ってないんです。 直前にDBからデータをひっぱってくる処理をしているんですが…考えられる原因があれば教えてください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Mizyu
  • ベストアンサー率41% (245/593)
回答No.1

手元にJava環境がなく、うろ覚えで恐縮ですが Stringの比較を行うのは if ( a.equals("abc") ){ とやる必要があります。 ※ equalsメソッドは 文字列が一致すればTrue、一致しなければFalseを返却 ただ、StringにNullが入っている場合、equalsメソッドを使うと NullPointerExceptionが発生するはずです。 なので if(!a)でできないでしょうか? また、DBから取ってきて…とありますので、Nullではなく、""がはいってるのでは? それならば、if ( a.equals("") ) だと思います。 すいません、自信はないです…。

nana_ko
質問者

お礼

ありがとうございます。 質問直後に謎が解けてました^^;;; Stringは==での判定ってできなかったんですよね…うっかりしてました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.2

DB関係はよくわからないのですが、見当で… (1) if(a == null); { a = "0"; } となってないでしょうか。 私は以前、これではまった経験があって…。それ以後「{」の位置を変えました。 たぶん違うでしょうけど。 (2) if(a.equals("")) { a = "0"; } としてみたらどうなりますか? a = null;のときとa = "";のときでは結果が違うはずです。

nana_ko
質問者

お礼

ありがとうございます。 質問直後に謎が解けてました^^;;; Stringは==での判定ってできなかったんですよね…うっかりしてました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • if文の使い方について

    if文でaの値とbの値とcの値が一緒なら次の処理を行うものを作成したいのですが。 if($a==$b==$c){ 行いたい処理 }else{ その他の処理 } と書いたのですが、ダメで if($a=$b=$c){ 行いたい処理 }else{ その他の処理 } と書いたのですが、これもダメでした。 if($a==$b) {  if($b==$c)  {    処理   }else{     その他の処理   } }else{ その他の処理 } と書かいたら実行されたのですが、このように分けて書かないとダメなのですか? いいやり方がありましたら教えてください

    • ベストアンサー
    • PHP
  • IF文の使い方を教えてください

    もし A5001 に データがあるのなら処理を中止し、データが無ければ処理を継続する。内容のマクロを考えてますが、 A5001にデータがないなら処理を中止は下記の記述で良いかと思いますが、 逆にあったら処理を中止する記述はどうすればよいのですか? Value が怪しいかと思うのですが・・・・ お願いします。 If Range("読み込み!A5001").Value = "" Then MsgBox "データがありません", vbOKOnly, "データ有無確認" Exit Sub End If ret = MsgBox("過去のシュミレーションデータを削除します。よろしいですか?", vbYesNo + vbQuestion, "データ削除実行確認") If ret = vbNo Then Exit Sub End If

  • if文について

    $a = $_GET['b']; if ($_COOKIE['hogeFlag'] != hoge) && (!isset($a)) {  処理1 } あるページから画面遷移したときに遷移前に食わせたcookieの値とgetで送られてくる値を元にある処理を行いたいのですが、どうもうまく処理1に入ってくれません。 個々にすればちゃんと処理されるのですが、それだと非効率だと思うので、一行で書きたいのですがどうもうまくいきません。 前提 遷移前ページでcookieに値を食わせてかつ別の値をgetで送ってくるようになっているが、cookieの値が食わせた値と違う場合かつgetで送ってこなかった場合に処理1を実行したい。

    • 締切済み
    • PHP
  • if文が上手くいかない・・・

     連続投稿失礼します。  if文が上手くいきません。$hensuuの値が間違っているのにもかかわらず、条件があっている時の処理が実行されてしまいます。  なにやら癖になっているようで、if文を書くたびこのような事態が発生します。(PHPに限らず、C言語でまで・・・。)一体何が原因なのでしょうか? <?php $hensuu = "right"; if($hensuu = "wrong"){ print <<<_EOT_ 条件に合ってないはずなのに、こっちが表示されちゃう。 _EOT_; } else { print <<<_DRK_ 本来こっちが表示されるはずなのに、表示されない・・・。 _DRK_; } ?>  よろしくお願いします。

    • ベストアンサー
    • PHP
  • エクセルのIF文の質問

    お世話になります。 エクセルの条件分岐で、 ・値が0、もしくは空白のときは空白を表示、違ったら値を参照 ・一つ上の行と次の行の値が同じなら空白を表示、違ったら値を参照 という二つのIFを組み合わしたいのですが、どうにもうまくいきません。   A|B|C| 1|あ|い| | 2|あ|0 |う| 3| |0 |う| 例えばこんなデータなら、シート2にその結果を表示させたとして   A|B|C| 1|あ|い| | 2| | |う| 3| | | | こんな感じにしたいのです。 現在、 ・1行目に、空白か0なら空白を表示させる式を入力し IF(OR(A1="",A1=0),"",A1) ・2~データの終わりの行に、上と同じなら空白を表示させる式を入力しています。 IF(A1=A2,"",A2) でもこれをするとなぜかうまくいきません。 A2の値が空白だった時に0が表示してしまいます。 それに、自分の作った計算式もなんかスマートじゃない気がしてなりません。 もっと良い方法はないでしょうか?

  • javaでif文を使ってわかりません

    javaでif文を使ってわかりません わからないのはキーボード入力で0なら「0です」と偶数・奇数ならそれぞれ偶数・奇数と表示するif文のプログラムです。 とりあえず import java.util.Scanner; public class OddEven2 { public static void main(String[] args){ Scanner sc = new Scanner(System.in); int str = sc.nextInt(); if(str==0) { System.out.println("0です"); } } } まではできました けど何億とある数字をキーボード入力で奇数なら奇数だけ表示させるとはどういうことでしょうか? 条件処理でこの値以上この値以下でなわけないし 糸口さえ掴めない状態です ヒントをいただけるとありがたいです

  • if文で…

    いつもお世話になっております。 ------------------------ typedef struct douken_ { char tiku[11]; char ken[9]; } douken; int main(void){ FILE *fp; douken dou [100]; char buff [18 /* douken */ + 2 /* CrLf(\n\r) */ + 1 /* \0 */]; int i; i = 0; fp = fopen("ex3.fil","rb"); if ( fp == 0 ){ printf("can't open\n"); exit(1); } memset (dou , '\0' , sizeof dou); memset (buff, '\0' , sizeof buff); 問題はここから----------------- while (fgets(buff,sizeof buff,fp) != NULL){ memcpy(&dou[i].tiku ,buff,10); memcpy(&dou[i].ken ,buff+10,10); if (&dou[i].tiku == &dou[i-1].tiku){ printf("%s %s",&dou[i-1].tiku,&dou[i].tiku,&dou[i].ken);} else{ printf("-----------------------"); } ------------------------ 上記のプログラムでは ファイルから読み込んだデータを 構造体に格納して if文で現データと全データを 比較するという処理をしています。(つもり) 構造体に格納するところまでは 出来たのですが if文のところが上手く行きません。 例えば 現データ(tiku)関東地区 前データ(tiku)関東地区 と、同じ場合は 関東地区 東京 と、表示したいのに ----------- と、elseの処理をしてしまいます。 対処方法をご存じでしたら、 ご教授して頂けたら幸いです。

  • エクセル IF文基本を・・・

    「A1の値が1の時 B1の値を表示しろ」と言う IF文を作りたいのです。 =IF(A1=1,B1) 先の様に書いたのですが、ファレスと 出てしまいます、記述がおかしいのでしょうか?

  • PHPのIF文で条件の記述の仕方について

    PHPのIFを用いて、データベースから取り出した特定のレコードが 変数に入っている値と一致する場合とそうでない場合で処理を分けたいと考えています。 変数に入っている値と一致する場合は 指定したURLへリダイレクトされるようにしたいです。 以下のようにIF分を書いても条件に引っかからず 次の処理に進んでしまいます。 ※testレコードに入っている値はredirectです。 ------------ $db = mysql_query('SELECT * FROM redirect_records WHERE user_id='.$userid, $connect); $db = mysql_fetch_array($db); $Comparison1=$db['test']; $Comparison2='redirect'; if ($Comparison1 == $Comparison2){ $url = '/redirect/test'; $form_state['redirect'] = $url; } ------------ 記述の仕方が間違っているのでしょうか。 PHPに関してはまだまだ初心者で原因がわかりません。 具体的には上記のIF分はIF分の中に入れ子になっています。 ボタンをクリックした時にtestレコードに入っている値がredirectなら/redirect/testへ それ以外は次の処理へと進んでほしいです。 ------------ function form_submit($form, &$form_state) { global $user,$order,$item; if ($_SESSION['checkout_valid'] === FALSE) { $url = '/checkout'; } elseif ($_SESSION['checkout_valid'] !== FALSE) { $db = mysql_query('SELECT * FROM redirect_records WHERE user_id='.$userid, $connect); $db = mysql_fetch_array($db); $Comparison1=$db['test']; $Comparison2='redirect'; if ($Comparison1 == $Comparison2){ $url = '/redirect/test'; $form_state['redirect'] = $url; } } ------------ このようにelseifの中の処理でさらにtestレコードにredirectが入っている場合は <URL>/redirect/testに飛ぶようにしたいです。 「環境」 PHP 5.2.17 MySQL 5.1.59 どうかお助けください。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 添え字を使用したIF文の書き方について。

    QNo.7510971ご質問していた原因が分かりましたので ご報告いたします。 QNo.7481482で解決致しましたテキスト入出力をする際 arrayline[7] = "住所漢字";のテキストデータに スペースがない文字列の領域からテキストアウト出来なかったことが 判明しました。 >入力される住所は、予め全角空白「 」で必ず区切られているのですか? もしそうでないとすると、「住所の途中や番地の途中で区切らない」を自動で判断するのは困難です。 の問いに対して 全角空白「 」で必ず区切られていると 報告してしまったのですが 例外でスペースがなくすべて全角80桁で埋まっている場合は 4等分つまり20文字ずつ設定しなければならなかったのですが・・・ この時点でこの作業は成立しませんでしょうか?? 例えばIF文で、全角スペースがない場合は20文字ずつ4等分に することは出来ないのでしょうか?? それとQNo.7510971でご質問した際 String addr = "aaaaaaaaa bbbbbbbbbb cccccc ddddddddddddddd eee ffffff"; String[] strAry = addr.split(" "); (A) strAry[1]がnullなら終了。 (B) strAry[0]の長さとstrAry[1]の長さの和が19以上のときは(E)へ。 (C) strAry[0]に、strAry[0]+" "+strAry[i+1]を代入する。strAry[1]にstrAry[2]を代入、strAry[2]にstrAry[3]を代入、…のようにstrAry[]の要素を前に詰める。strAry[]の最後の要素にはnullを入れる。 (D) (A)に戻る。つまり、strAry[0]の長さが20を超えない範囲で、どんどんstrAry[1]以下の文字列をstrAry[0]に連結していく。 (E) 配列の添字を1ずつ増やした状態で(A)~(D)の内容を繰り返す。 のような提案を頂いて 現在少しずつ検証を行っている最中ですが strAry[0]の長さとstrAry[1]の長さの和が19以上のとき の構文が書けません。 String str = new String(住所漢字); String[] strAry = str.split(" "); String cuttmp = null; // strAry[0] と strAry[1]の和が19文字を超える(20文字以上なら) if(○○○○○○○○○○ .length()<19 ){ cuttmp = ((○○○○○○○○○○)); の○○の部分は if(strAry[0]+strAry[1].length()<19 ){ とかですと エラーになります。 そのた色々と試したのですが どんな感じで考えていけばよろしいのでしょうか?? どうぞよろしくお願い致します。

    • ベストアンサー
    • Java