- PR -

二次元配列の参照

1
投稿者投稿内容
ありぱぱ
会議室デビュー日: 2003/06/13
投稿数: 3
投稿日時: 2003-06-13 21:38
javaの初心者です。よろしくお願いします。

二次元配列の内容を参照したいのですが、思うような結果になりません。
いい方法があったら教えて下さい。

String seikyu1[][];

dbc = new DB_CONNECT();

seikyu1 = dbc.getSeikyu_Gamen1(w_nendo, w_seqno);

if (seikyu1[14][0].equals("00")) {
処理;
}

上記のような感じです。
二次元配列にデータベース検索した値を返し、その内容を参照しています。
seikyu1[14][0]の内容は00に間違いはないのですが、if文はfalseを返します。
compareToも使ってみたのですが、これもfalseを返します。
配列じゃないstringクラスに代入してから比較したり、いろいろやってみたのですが、
うまくいきませんでした。
わっき〜
会議室デビュー日: 2002/09/07
投稿数: 7
投稿日時: 2003-06-13 23:46
はじめまして、わっき〜と申します。どうぞよろしくです。

さて、ご質問の件ですが・・・
この質問ではあまりにも色々と可能性が考えられすぎます。
非常に素人くさい試し方ですが、
1)seikyu1[14][0]をprintしてみる
2)dbc.getSeikyu_Gamen1()[14][0]をprintしてみる
3)getSeikyu_Gamen1()の中で当該データをprintしてみる
といった感じで一つずつつぶしてみてはどうでしょう?
さらに、ただprintするのではなく
System.out.println( "(" + seikyu1[14][0] + ")" );
のようにして、前後をびっちりはさんであげれば、余計な文字が含まれて
いないかどうか確かめられます。
いかがでしょう?
ありぱぱ
会議室デビュー日: 2003/06/13
投稿数: 3
投稿日時: 2003-06-16 09:35
こんにちは、ありぱぱです。

わっき〜さん、ありがとうございます。
""をつけて表示してみたら、"00 "となっていました。
間違って余計な空白が入ったのかと思って、
"00 "で比較してみたのですが、if文はfalseになってしまいました。
他の項目も調べてみたら、後ろに空白?が入っていました。
どうやらデータベースの作り方に問題があるようです。

いいテスト方法を教えていただきました。
これで先に進めそうです。感謝感謝です。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2003-06-16 21:36
ありぱぱさんの書き込み (2003-06-16 09:35) より:
>どうやらデータベースの作り方に問題があるようです。

データベースの該当カラムの型が固定長文字列になっていませんか?
ありぱぱ
会議室デビュー日: 2003/06/13
投稿数: 3
投稿日時: 2003-06-17 08:38
引用:

ukさんの書き込み (2003-06-16 21:36) より:
>データベースの該当カラムの型が固定長文字列になっていませんか?



そのとおりでした。
可変長文字列にしたら、後ろの空白?が無くなりました。
基本的なことなのかもしれませんが、
データベース項目の固定長と可変長で何が違ってくるのか
教えていただけますか。
raystar
ぬし
会議室デビュー日: 2003/01/16
投稿数: 251
お住まい・勤務地: Tokyo/Japan
投稿日時: 2003-06-17 09:21
引用:

そのとおりでした。
可変長文字列にしたら、後ろの空白?が無くなりました。
基本的なことなのかもしれませんが、
データベース項目の固定長と可変長で何が違ってくるのか
教えていただけますか。



文字通りデータの長さが変わります。
用途にもよりますが・・・

固定長のデータを比較する場合は必ず trim() してあげてください。
固定長文字列などの場合、結合時にSQL関数で trim してあげないと
いけないし、INDEXが使われないなどの問題がありますので
あまり好きではありませんが(^^;
まりり
ぬし
会議室デビュー日: 2001/12/05
投稿数: 329
投稿日時: 2003-06-17 10:24
> 基本的なことなのかもしれませんが、
> データベース項目の固定長と可変長で何が違ってくるのか
> 教えていただけますか。

本当に基本的なことなので、DBの入門書など参考にしてみてください。
実装方法を想像してみたら違いもわかりやすいかもしれないですね。
1

スキルアップ/キャリアアップ(JOB@IT)