プロが教えるわが家の防犯対策術!

Javaの問題なんですが、練習14-1の問題が分かりません。①の出力メソッドなんですが、balanceに何も代入されてないから表示されないんじゃ無いでしょうか?②はどうやって比較してるか分からないです。

「Javaの問題なんですが、練習14-1の」の質問画像

質問者からの補足コメント

  • 画像撮り直しました。

    「Javaの問題なんですが、練習14-1の」の補足画像1
      補足日時:2021/10/11 23:01
  • 解答画像です

    「Javaの問題なんですが、練習14-1の」の補足画像2
      補足日時:2021/10/11 23:01

A 回答 (2件)

> ①の出力メソッドなんですが、balanceに何も代入されてないから表示されないんじゃ無いでしょうか?



問題に次のように書いてます。

「口座番号4649、残高1592円のAccountインスタンスを変数aに生成し、「System.out.println(a);」を実行する」

ってのの意味は、Main.javaを作って

public class Main {
 public static void main(String[] argv) {
  Account a = new Account();
  a.accountNumber = "4649";
  a.balance = 1592; // ここでbalanceに代入する
  System.out.println(a);
 }
}

としろ、って意味。


> ②はどうやって比較してるか分からないです。

比較はしてない。単に等値あるいは等価なのか判定してるだけ(本来ならオブジェクトが全く同一のモノか判定すればいいだけだと思うんだが---要するに「同じ口座番号の口座が二つあれば困るから---その辺は置いておく)。

基本はthis == oで判定してて、このテストをパスしなかった場合、「念の為に」口座番号が同じかどうか調べてる。
    • good
    • 0

①設問は銀行口座クラスを作るということですから、mainがどうなっているかはあまり考えないで、class Account の中を作ることに専念すればいいと思います。


強いて、balanceに何も代入されてないということを解消するのであれば
メソッド setbalance(int bal){balance =bal;}
    setbnumber(String num){accountNumber =num;}
を作ってもいいと思います。
そのうえで、toStringメソッドを作るということで。
②ヒントにあるように。Stringクラスのメソッドtrim()の機能を使い、文字列中の半角スペース、改行文字、タブ文字の除いた文字列を求めています(trimでは全角文字は除かれません)。
その次に、equalメソッドで、同じか判定しています。
ご存知かと思いますが、Stringはクラスなので、O=Aの比較はクラスを格納しているアドレスが同じかどうかを確認しているもので、内容が同じか確認するにはsqualメソッドを使う必要があります。
 なお、設問の「System.out.println(a);」は、(a.toString)にしないと、aのアドレスが表示されると思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!