Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

配列の中身の検索について

今javaで銀行口座プログラムを作っているのですがどう
も口座の検索がうまくいきません。自分の書いたプログ
ラムはこれなのですが、どうしてもif文の条件に入るよ
うな条件でもif文に入らず-1を返してしまいます。書き
方とか間違っているのでしょうか?ご指摘よろしくお願
いします。
 public Bank(){
        banksize = 20;
        customer = new Account[banksize];
        last = 0;
    }
private int find(String name){

        for(i = 0; i < last; i++){
            if(customer[i].getName() == name){
                return i;
            }
        }
        return -1;

    }
変数宣言の部分は省略しました。banksize cutomerなど

7

回答

7347

閲覧

7件の回答

評価

0

Sring 型の比較は == ではなく equals を使って下さい。

評価

0

単純に基礎をすっ飛ばしたパターンと、例えばJavaScriptを
やって来た人が、似てるからと言って基礎をすっ飛ばす
パターンとがあるけど、何れにしても基本を大事に考えて
いないと、こういうところで引っかかる。

評価

0

比較のところを
if(customer[i].getName.equals(name))にしましたが
変わりませんでした。
if(customer[j].doBalance() == 0)のようなif文も==は使
ってはいけないのでしょうか?

ちなみに配列は private Account customer[]でやりまし
た。

評価

0

getName が String 型であれば equals でいいはずです。
ただし、文章の中から特定の綴りを探すのなら indexOf。
== で比較出来るのはプリミティブ型です。
つまり byte short char int long float doumle 等。
また、参照型では == は同じインスタンスかどうかの判定です。

評価

0

>変わりませんでした。
それは明らかに、別の文字列が入ってるんだよな。

評価

0

デバッグ文を入れてみるというのは、古典的ながら一番
確実な方法だよ。
Eclipseなんかの統合環境ならブレークポイント。

ひとつ前は別の文字列と書いたけど、それよりもlastを更新
してなくてループに入ってない、てなミスの方がやりそうな
気がしてきたw

評価

0

lastみたいなのを別途管理するのはスマートではないな。
配列の代わりにListを使うことで、データ自体に管理させる。
配列は古い概念だし、基本的には絶対に大きさの変わらない
グループに対してのみ使うと良い。
例えば年月日の3組とか、コインの裏表に対応するものとか。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。