• ベストアンサー

問題の意味が分かりません

secretdの回答

  • secretd
  • ベストアンサー率39% (50/126)
回答No.1

まあおっしゃるとおり日本語の問題ですねぇ。 Lendmanagerクラスは本を最大5冊しかもてないようです。 でもそんなこと知らないプログラムを使う人は6冊とか7冊とか入れてくるかも知れません。 そうなったときどーするの?てなわけで 「これ以上追加できません」ってメッセージを表示しろ、って書いてます。 でも、3冊とかで入力を止めたい人とかもいるよね。だから 「endが入力されるまで(1)~(6)を繰り返す」って書いてるわけです。 課題か何かか知らないけれど、実行するときは(Lendmanagerクラスが管理できない)6冊を入れてみて、ちゃんとエラーを吐くことを示してください、っていうのが意図。 ちなみに。Lendmanagerは名前の通り管理クラスだから、そのインスタンスを作る(1)は1回しかやらなくていいはず。問題間違ってません?

noname#39315
質問者

補足

丁寧に解説頂きありがとうございました。 問題を解き始めたのですが壁にぶつかってしまいました。 1 まずLendmanagerクラスについてですが、 これはサブクラス(extends)として宣言してよいのでしょうか? 2 Lendmanagerの-aBook:Book[]ですが、 Book[] aBook = new Book[5];にprivateをつける場合どのように記述したらよいのでしょうか? 3 show()メソッドで最後に全ての内容を表示するわけですが 何に格納してどのように表示するかイメージがわきません。 どなたかよろしくお願いします。

関連するQ&A

  • NullPointerExceptionがでてしまいます(TT

    Javaを初めて、数日です。 プログラムを作成していたところ、NullpointerExceptionが出てしまい解決策が見つからず前進できません。 よろしければ、お手をお貸しください。よろしくお願いいたします。 class Book { String name;//書名 String author;//著者名 String publisher;//出版社 /*コンストラクタ*/ Book(String name, String author, String publisher) { this.name = name; this.author = author; this.publisher = publisher; } /*文の文字列化*/ public String toString() { return ("書名" + this.name + ",著者名" + this.author + ",出版社" + this.publisher); } } class BookShelf { static Book[] bookShelf;//本棚のデータ構造 ここでは本の配列 static int index = 0;//本が次に入る本棚の位置(配列の添え字) static int i; static int maxsize; /*コンストラクタ*/ BookShelf(int maxsize) { bookShelf = new Book[maxsize]; } /*本棚に本abookを入れる*/ static void add(Book aBook) { bookShelf[index].name = aBook.name; bookShelf[index].author = aBook.author; bookShelf[index].publisher = aBook.publisher; index++; } /*本棚の本の一覧を標準出力に出力する*/ static void show() { for (i = 0; i < maxsize; i++) { System.out.println(bookShelf[i]); } } /*本棚の文字列化*/ public String toString() { return "書名:" + bookShelf[i].name + ",著者名" + bookShelf[i].author + ",出版社:" + bookShelf[i].publisher; } } class TestBookShelf { public static void main(String args[]) { BookShelf bookshlef1 = new BookShelf(2); Book X = new Book("book1", "tanaka", "SIT1"); BookShelf.add(X); Book Y = new Book("book1", "suzuki", "SIT2"); BookShelf.add(Y); BookShelf.show(); } }

    • ベストアンサー
    • Java
  • equalsメソッドの実装

    いくつかの本をインスタンスで生成します。この本を4つ生成するときに、3つ目に用意したインスタンスと4つ目に用意したインスタンスの中身が等しい=trueという処理をおこないたいのですが、調べてみた結果、自分でequalsを実装しなくてはならないらしく、その実装ができずにこまっています。equalsメソッドがどんな形になるか、教えていただけないでしょうか? class Book{ String name;//書名 String author;//著者 String publisher;//出版 /*コンストラクタ*/ Book( String name, String author, String publisher, int number){ this.name = name;//書名 this.author = author;//著者 this.publisher = publisher;//出版社 } } class BookShelf{ public static void main(String[] args){ /*インスタンスを作成*/ Book aBook_A = new Book("書名1","Aさん","A出版"); Book aBook_B = new Book("書名2","Bさん","B出版"); Book aBook_C = new Book("書名3","Cさん","C出版"); Book aBook_D = new Book("書名3","Cさん","C出版"); System.out.println(aBook_C.equals(aBook_d));//falseが返される。 } }

  • voidの性質や使い方、showメソッドについて

    1ファイル1クラスの原則に反しますが、敢えて1ファイルに2クラスあるプログラムにおいて、voidの性質や使い方、showメソッド等について教えてほしいです。 ファイル名はStart.javaです。 --------------------------------- package sample; class Cat { String name; int age; void show(String name,int age) { System.out.println("名前は" + name + "です"); System.out.println("年齢は" + age + "歳です"); } } public class Start { public static void main(String[] args) { Cat cat1 = new Cat(); cat1.name = "太郎"; cat1.age = 28; cat1.show(); } } --------------------------------- 「cat1.show();」のところでエラーが出ていますが、Eclipseでそのまま実行してみますと。 ~~~~~~~~~~~~~~~~~~~ Exception in thread "main" java.lang.Error: Unresolved compilation problem: 型 Cat のメソッド show(String, int) は引数 () に適用できません at sample.Start.main(Start.java:16) ~~~~~~~~~~~~~~~~~~~ といったエラーが出てきます。しかし、Catクラスの「void show(String name,int age) 」の箇所を「void show() 」のように、Startクラスと同じく引数の中身を空にしますと。 |||||||| 名前は太郎です 年齢は28歳です |||||||| と、正しい結果が出力されたのです。 最初のプログラムは、Catクラスのshowメソッドには引数があり、Startメソッドのshowメソッドには引数が無い状態でした。 修正したプログラムでは、どちらのクラスのshowメソッドにも引数はありませんでした。 最初のプログラムでも、mainメソッドを実行して、nameとageに値を格納して、showメソッドでCatクラスの方で定義したshowメソッドを呼び出すといった流れで、正しい値は出るはずだと自分は考えたのですが。 なぜエラーになってしまったのか、どうして2つのクラスのshowメソッドの引数が空だとうまく結果が出力されたかにつきまして、お教えいただけないでしょうか。 よろしくお願い致します。 ※OKWAVEより補足:「Webシステム開発」についての質問です。

    • ベストアンサー
    • Java
  • 問題文の理解が出来ません

    こんにちは。 javaの勉強をやっているのですが 問題文が理解できないため先へ進めない状況です。 以下のクラス図に従いCarクラスとTruckクラスを作成 質問文ですがそのつど「」でお聞きします。 Car74(スーパークラス) ------------- -name:String -mieage:long -engineSound:String ------------ +Car74(name:String,mileage:long,engineSound:String) +startEngine():void{final} +getEngineSound():String +show():void Truck(サブクラス) -loadage:int ---------------- +Truck(name:String,mileage:long,loadage:int,engineSound:String) +getEngineSound():String +show():void [Car74クラス] startEngine()メソッドはオーバーライドできない(final) getEngineSound()メソッドから得るエンジン音を6回表示 getEngineSound()メソッドはString型のエンジン音を返す show()メソッドでは名称、走行距離を表示 [Truckクラス] Car74クラスのサブクラスでloadageは積載量が入る コンストラクタでは、3つの引数をとり「名称、走行距離、エンジン音ですよね」nameとmileageを引数としてsuperクラスのコンストラクタを呼びもうひとつの引数loadageはこのクラスフィールドに代入する「クラスフィールドに代入とはなんでしょうか」 getEngineSound()メソッドではString型のエンジン音を返す(消音装置つきなのでもとの50パーセントの文字数になる) show()メソッドでは名称と走行距離の表示はsuperクラスで行いこのメソッドでは積載量を表示。 [Ex74クラス(main()メソッド)] メインメソッドでCar74オブジェクトをひとつ作りコンストラクタで 名称と走行距離とエンジン音の値を設定する さらに、Truckオブジェクトを一つ作りコンストラクタでは名称と走行距離とエンジン音の値を引数にsuperクラスのコンストラクタを呼び積載量の値はここで設定「そのままloadage=5と入力してOKでしょうか」。 startEngine()メソッドとshow()メソッドを呼んで以下のように表示 名称はPORSCHE,走行距離は10000です。 ババババ ババババ ババババ ババババ ババババ ババババ 名称はキャンター走行距離は20000 積載量は5t ドド ドド ドド ドド ドド ドド 途中経過 class Car74{ private String name; private long mileage; private String Sound; public Car74(String n, long m, String s){ name = n; mileage = m; Sound = s; show(); } public void show(){ System.out.println("名称は" + name + "、 走行距離は" + mileage); } } class Truck extends Car74{ int loadage; public Truck(String n, long m, String s){ super(n, m); loadage = 5; } public String getEngineSound(String sound){ //50パーセントの音 return sound; } public void show(){ System.out.println("積載量は" + loadage); } } class Ex74{ public static void main(String args[]){ Car74 car = new Car74("PORSCHE", 100000, "ババババババババ"); Truck truck = new Truck("キャンター", 20000, "ドドドド"); } } +Truck(name:String,mileage:long,loadage:int,engineSound:String) ちなみに↑これはどうやって記述したらよいかわかりません。 どなたかよろしくお願いします。

    • ベストアンサー
    • Java
  • 初心者なのですが

    複数の著者の名前を保持するフィールドauthors(String型の配列で、要素数は最大10とする)を追加し、複数の著者の名前を一度に設定するメソッドvoid setAuthors(Vector names)を追加する。引数names(java.util.Vectorクラス)の各要素は著者名を表す文字列とし、このメソッドが正常に動作していることをmain関数で確認するということをやっているのですがエラーが出て上手く出来ません。どなたか教えてもらえないでしょうか?以下にソースとエラーメッセージを載せています。 import java.util.Vector; public class javaprog { public static void main(String[] args) { /* Bookクラスからインスタンスを生成 */ Book myBook = new Book("The Java Tutorial", 55, 1999); System.out.println("My book title = " + myBook.getTitle()); System.out.println("My book title = " + myBook.title); System.out.println("My book price = $" + myBook.getPrice()); System.out.println("My book Yenprice = ¥" + myBook.getYenPrice()); System.out.println("My book year = " + myBook.getYear()); /* Bookクラスからインスタンスを生成 */ Book yourBook = new Book("The Java Programming Language", 40, 1998); System.out.println("Your book title = " + yourBook.getTitle()); System.out.println("Your book price = $" + yourBook.getPrice()); System.out.println("Your book Yenprice = ¥" + yourBook.getYenPrice()); // 追加したところ Vector names = new Vector(); // コレクションクラスVectorのインスタンスの生成 names.add(new String("Java")); nemes.add(new String("Programming")); nemes.add(new String("Language")); Book theirBook = new Book("The world of Java Book", 30, 2000); theirBook.setAuthors(names); } } // ここまで class Book { // クラスBookの宣言 String title; // 題名 private int price; // 価格(ドル) private int year; // 出版年(西暦) String authors[10]; // 複数の著者の名前を保持する Book(String t, int p, int y) { // コンストラクタ title = t; // 題名の設定 price = p; // 価格の設定 year = y; // 出版年の設定 } public String getTitle() { // 題名の取得 return title; } public int getPrice() { // 価格の取得 return price; } public double getYenPrice() { // 円での価格の取得 double yenPrice = price * 111.58; return yenPrice; } public int getYear() { // 出版年の取得 return year; } public void setAuthors(Vector names) { authors = names; } } % javac javaprog.java javaprog.java:37: ']' がありません。 String authors[10]; // 複数の著者の名前を保持する ^ エラー 1 個 %

    • ベストアンサー
    • Java
  • 継承とsuperの意味が理解できません。

    継承とsuperの意味が理解できません。 今日は、JAVA初心者です、宜しくお願いします。 1番目のアプレットで「Applet」を継承させると、正常にWINDOWが表示されます。 しかし、2番目のアプリケ-ションを動かすと、「JFrame」を継承して、「PAINT」 を上書きしているのに、WINDOWは表示されますが、 透明になって、下側の画面が映り、Todayという文字は正常に表示されません。 paintメソッド内に、「super.paint(g);」を書いてやると、正常に動作します。 (3番目のプログラム) テキスト通に、「JFrame」を継承して、「PAINT」を上書きしているのに、「PAINT」 メソッド内で、更に「super.paint(g);」を呼び出す必要性、理由がわかりません。 継承の意味が無いと思うのですが、他に原因があるのでしょうか。 継承している子クラスは、無条件で親クラスのメソッドを上書き出来ると思うのですが、 一体どのような時にSUPERが必要になるのでしょうか。 宜しくお願いします。 1番目のプログラムをと2番目のプログラムはアプレット、アプリケーションとの違い はあるとしても、 基本的な考え方は違わないと考えてるのですが。 ====================================================== public class Sample1 extends Applet { public void paint(Graphics g) { g.drawString("java",10,10); } } ====================================================== public class JFrameTest extends JFrame { JFrameTest() { setSize(400,300); setTitle("JFrameTest"); } public void paint(Graphics g) { g.drawString("Today",100,100); } public static void main(String[] args) { JFrame jf = new JFrameTest(); jf.show(); } } ====================================================== public class JFrameTest extends JFrame { JFrameTest() { setSize(400,300); setTitle("JFrameTest"); } public void paint(Graphics g) { super.paint(g); g.drawString("Today",100,100); } public static void main(String[] args) { JFrame jf = new JFrameTest(); jf.show(); } } ======================================================

    • ベストアンサー
    • Java
  • 問題文の意味が分かりません。

    こんにちは。 早速ですが、質問させていただきます。 javaの勉強をしているのですが、タイトル通り問題文の意味が分かりません。 問題文 Ex44の課題ではメソッドのオーバーロードをしたがこれをコンストラクタにしなさい。 (クラスはPersonとする)オブジェクトはa1,b1,a2,b2,a3,b3として作成する。 a1を作成するときに、"Tom"を引数とする b1を作成するときに、"Bill"を引数とする a2を作成するときに、50.5を引数とする Ex44の課題 class Person2{ private String name; private double weight; public void SetPerson(){ name = "未設定"; weight = 0.0; } public void SetPerson(String n){ name = n; weight = 0.0; } public void SetPerson(String n, double w){ name = n; weight = w; } public void show(){ System.out.println("nameは、" + name + "です。weightは" + weight + "です。"); } } class Ex44{ public static void main(String args[]){ Person2 person1 = new Person2(); person1.SetPerson(); person1.show(); person1.SetPerson("田中"); person1.show(); person1.SetPerson("田村", 60.0); person1.show(); } } コンストラクタの意味自体は分かっているのですが、 a1,b1,a2,b2,a3,b3というところと a1を作成するとき、"Tom"を引数とする b1を… a2を… というところがいまいち何を言っているのか分かりません。 どなたか分かりますでしょうか。 よろしくお願いします。

    • ベストアンサー
    • Java
  • プログラミング(JAVA)

    1.つぎのような貯水槽の機能を表現するクラスがあるとします。以下の記述に引数で指定した量だけ水を加えるメソッドaddを付加し、その機能を確認できるようmainメソッドを変更し実行させなさい。ただし、水は最大貯水量を超えては入れられないようにしなさい。最大量に達した場合は、警告メッセージを表示するようにしなさい。 ↓↓自分でやったコードですここまでできました///次がわかりません class WaterTank6_1 { double capacity = 100.0; // 最大貯水量(初期値が100リットル) double meter = 0.0; // 水量計の値 void show() { System.out.println(“現在の貯水量は “ + meter + “リットルです。”); } public static void main(String[] args) { WaterTank6_1 tank1 = new WaterTank6_1(); tank1.show(); } } addの仕様 void add(double val)

  • インターフェイス実装クラスの表示について

    /* インタフェースPlanetを実装したクラスEarth、Marsがあります。  以下の実行結果になるようにクラスAggregateへshowメソッドを  追加してください。 [実行結果] 地球 太陽系にある惑星の1つで、太陽から3番目に近い。・・・ 火星 太陽系の太陽に近い方から4番目の惑星である。・・・ */ // [Planet.java] // 実装したいPlanetクラス interface Planet {   public String getName();   public String getOutline(); } // Planetを実装したEarthクラス // [Earth.java] class Earth implements Planet {   private final String name="地球";   // getNameメソッド:戻り値String、引数無し   public String getName(){    return name;   }   // getOutlineメソッド:戻り値String、引数無し    public String getOutline(){      return "太陽系にある惑星の1つで、太陽から3番目に近い。・・・";    } } // Planetを実装したMarsクラス // [Mars.java] class Mars implements Planet {   private final String name="火星";   // getNameメソッド:戻り値String、引数無し   public String getName(){     return name;   }   // getOutlineメソッド:戻り値String、引数無し   public String getOutline(){     return "太陽系の太陽に近い方から4番目の惑星である。・・・";   } } // メインクラス // [Main.java] class Main{   public static void main(String[] args){   // Earth&Marsクラスのインスタンス化    Earth earth = new Earth();     Mars mars = new Mars();   // Aggregateクラスのインスタンス化   Aggregate aggregation = new Aggregate();   // showメソッド呼び出し:戻り値無し、引数earth・mars    aggregation.show(earth);    aggregation.show(mars); } } // [Aggregate.java] class Aggregate { // ここにshowメソッドを追加   public void show(Earth planet){     System.out.println();   }   public void show(Mars planet){     System.out.println();   }  } showメソッドに引数としてEarth planet,Mars planetを渡すというところまでは理解しています。後は星の名前と概要を表示するのですが、例えば、 showメソッド内 // ここにshowメソッドを追加 public void show(Earth planet){ String str = earth.getName(); System.out.println(str); } public void show(Mars planet){ String str2 = mars.getOutline(); System.out.println(str2); } } とすると、erathとmarsの部分が「シンボルがありません」のエラーになります。自分の認識としては、EarthクラスとMarsクラスでフィールド変数を宣言しているので使えるのでは?と思っていたのですが、全然違うようです。どなたかどちらかのコード例を表記して頂けないでしょうか?よろしくお願い致します。

    • ベストアンサー
    • Java
  • あれ?

    すいません。 長い間、 疑問に思ってたことがあるんですけれども、 (1) import javax.swing.*; class Sample {  public static void main (String args[])  {   ........   Aメソッド()  } } (2) import javax.swing.*; class Sample extends aiueo {   public static void main (String args[])  {   ........   Aメソッド()  } } (3) class Sample extends aiueo {  public static void main (String args[])  {    ........   Aメソッド()  } } の違いが、 考えれば考えるほどわからなくなってきました。 パッケージと継承の関係について、 どうやら理解できていないみたいです。 どなたか分かりやすく教えてください。 よろしくお願いします。 (注) Aメソッドはaiueoクラスのメソッドとし、 aiueoクラスはjavax.swingパッケージに入っているものとします。

    • ベストアンサー
    • Java