• 締切済み

間違い箇所を教えてください。

サブクラスを記述する下記のプログラムについて質問します。 class Car { //タイヤ private String tire = ""; public Car() { tire = "タイヤ"; } /* *どんなタイヤであるかを設定 *value タイヤの種類 */ public void setTire(String value) { tire = value + "のタイヤ"; } /* *作成されたタイヤを返します *return タイヤ */ public String getTire() { return tire; } } class Motorcar extends Car { private String tire = ""; private String body = ""; private String handle = ""; String type = ""; public Motorcar() { tire = "タイヤ"; body = "車体"; handle = "ハンドル"; } public String getTire() { return tire; } public String getBody() { return body; } public String getHandle() { return handle; } public String createMotorcar(String t) { type = t; tire = type + "のタイヤ"; return tire; } } public class Sample1 { public static void main(String atgs[]) { Motorcar car = new Motorcar(); String type = "トラック"; String tire = car.getTire(); String body = car.getBody(); String handle = car.getHandle(); System.out.println("タイヤ=" + tire); System.out.println("車体=" + body); System.out.println("ハンドル=" + handle); //どんな車かを設定 car.createMotorcar(type); tire = car.getTire(); body = car.getBody(); handle = car.getHandle(); System.out.println(type + "の作成!!"); System.out.println("タイヤ=" + tire); System.out.println("車体=" + body); System.out.println("ハンドル=" + handle); } } このまま実行すると、後半の System.out.println("タイヤ=" + tire); System.out.println("車体=" + body); System.out.println("ハンドル=" + handle); この部分の出力結果が タイヤ = タイヤ 車体 = 車体 ハンドル = ハンドル となりますよね? それを タイヤ = トラックのタイヤ 車体 = トラックの車体 ハンドル = トラックのハンドル という風にしたいのですが、どう記述したらよいのでしょうか? //どんな車かを設定 car.createMotorcar(type); tire = car.getTire(); body = car.getBody(); handle = car.getHandle(); ここでメソッドを呼び出したときに tire・body・handleのそれぞれに「トラックの」という言葉が 追加されるようにメソッドを記述しなければいけないと 思うのですが、最初に呼び出すときは必要ないので どうすればよいのかが分かりません。 教えて下さい、お願いします。 長くてすみません・・・

  • Java
  • 回答数1
  • ありがとう数1

みんなの回答

回答No.1

/* >タイヤ = タイヤ 車体 = 車体 ハンドル = ハンドル となりますよね? ならない。 タイヤ = トラックのタイヤ 車体 = 車体 ハンドル = ハンドル となる。 */ class Car { //タイヤ private String tire = ""; public Car() { tire = "タイヤ"; } /* *どんなタイヤであるかを設定 *value タイヤの種類 */ public void setTire(String value) { tire = value + "のタイヤ"; } /* *作成されたタイヤを返します *return タイヤ */ public String getTire() { return tire; } } class Motorcar extends Car { private String tire = ""; private String body = ""; private String handle = ""; String type = ""; public Motorcar() { tire = "タイヤ"; body = "車体"; handle = "ハンドル"; } public String getTire() { return tire; } public String getBody() { return body; } public String getHandle() { return handle; } /* 別に戻り値あったっていいが,あっても使わないので。 */ /* *ちなみにcreateMotorCarした後は, *個人的には別にCarもMotorCarもCreateメソッドをオーバーライドする形でいいんじゃないかなあとか思ったりしないでもない。 なお,この仕様だと一回実行すると「の」の付かない単純な「タイヤ」「車体」「ハンドル」には戻せない。 */ public void createMotorcar(String t) { /* メソッドをこういう風に変更 */ type = t; tire = type + "のタイヤ"; body = type + "の車体"; handle = type + "のハンドル"; } } public class Q3914236A /* こちらの都合でクラス名か得てある */ { public static void main(String atgs[]) { Motorcar car = new Motorcar(); String type = "トラック"; String tire = car.getTire(); String body = car.getBody(); String handle = car.getHandle(); System.out.println("タイヤ=" + tire); System.out.println("車体=" + body); System.out.println("ハンドル=" + handle); //どんな車かを設定 car.createMotorcar(type); tire = car.getTire(); body = car.getBody(); handle = car.getHandle(); System.out.println(type + "の作成!!"); System.out.println("タイヤ=" + tire); System.out.println("車体=" + body); System.out.println("ハンドル=" + handle); } }

関連するQ&A

  • メソッドの呼び出し方

    サブクラスを記述する下記のプログラムについて質問します。 class Car { //タイヤ private String tire = ""; public Car() { tire = "タイヤ"; } /* *どんなタイヤであるかを設定 *value タイヤの種類 */ public void setTire(String value) { tire = value + "のタイヤ"; } /* *作成されたタイヤを返します *return タイヤ */ public String getTire() { return tire; } } class Motorcar extends Car { private String tire = ""; private String body = ""; private String handle = ""; String type = ""; public Motorcar() { tire = "タイヤ"; body = "車体"; handle = "ハンドル"; } public String getTire() { return tire; } public String getBody() { return body; } public String getHandle() { return handle; } public String createMotorcar(String t) { type = t; tire = type + "のタイヤ"; return tire; } } public class Sample1 { public static void main(String atgs[]) { Motorcar car = new Motorcar(); String type = "トラック"; String tire = car.getTire(); String body = car.getBody(); String handle = car.getHandle(); System.out.println("タイヤ=" + tire); System.out.println("車体=" + body); System.out.println("ハンドル=" + handle); //どんな車かを設定 car.createMotorcar(type); tire = car.getTire(); body = car.getBody(); handle = car.getHandle(); System.out.println(type + "の作成!!"); System.out.println("タイヤ=" + tire); System.out.println("車体=" + body); System.out.println("ハンドル=" + handle); } } これを実行したら、 タイヤ = タイヤ 車体 = 車体 ハンドル = ハンドル トラックの作成!! タイヤ = トラックのタイヤ 車体 = 車体 ハンドル = ハンドル となりました。 後半の車体・ハンドルにも「トラックの」という言葉 を入れるには、どういうふうにメソッドを記述したらよいのでしょうか? ちなみに問題では、サブクラスだけ自分で記述し、スーパークラス・ 実行クラスはこのまま利用することとします。

    • ベストアンサー
    • Java
  • webアプリを作ってます。 A result was returned

    webアプリを作ってます。 A result was returned web アプリを作ってます。 A result was returned when none エラー が出て原因がわかりませんでした。 どこがおかしいのか教えてください。 package info.searchman; import java.io.*; import java.sql.*; //import java.util.*; public class KensakuBeans implements Serializable { /** * */ private static final long serialVersionUID = 1L; private String Id; private String name; private String older; private String taiju; private String shintyo; private String other; private String[] results; //Constructor public void Kensaku2Beans() { System.out.println("sitb constructor"); } public void setName(String name) { this.name = name; System.out.println("dkb setter" +name); } // Getting Methods public String getId() { return this.Id; } public String getName() { return this.name; } public String getOld() { return this.older; } public String getTaiju() { return this.taiju; } public String getShintyo() { return this.shintyo; } public String getOther() { return this.other; } public int getCountOfResults() { System.out.println("ucb10"); if (results==null) return 0; else System.out.println("ucb10 else"); return results.length; } public String getResult(int index) { System.out.println("ucb11"); return results[index]; } //execute kensaku public void kensaku() { try { System.out.println("++++" +name); System.out.println("dkb7 insert"); //JDBC Driver Class.forName("org.postgresql.Driver"); System.out.println("dkb7 kensaku2"); Connection con = DriverManager.getConnection("jdbc:postgresql:postgres","postgres","gokui"); Statement stmt = con.createStatement(); System.out.println("dkb7 kensaku3"); String table = "test"; System.out.println(table); System.out.println("dkb7 kensaku4"); System.out.println(name); System.out.println("dkb7 kensaku5"); その2に続く http://okwave.jp/qa/q5933123.html

  • 実行するにはどうすれば良いのでしょうか?

    まず、 class Car{ private String name; private int width; private int height; private int length; private double x; private double y; private double fuel; Car(String name,int width,int height,int length,double fuel){ this.name=name; this.width=width; this.height=height; this.length=length; this.fuel=fuel; x=y=0; } double getX() {return x;} double getY() {return y;} double getFuel() {return fuel;} void putSpec(){ System.out.println("名前:"+name); System.out.println("車幅:"+width+"mm"); System.out.println("車高:"+height+"mm"); System.out.println("車長:"+length+"mm"); } boolean move(double dx, double dy){ double dist = Math.sqrt(dx*dx+dy*dy); if(dist < fuel) return false; else { fuel -= dist; x += dx; y +=dy; return true; } } } のファイルをcar.javaと名前をつけて保存しました。 次に import java.util.Scanner; class CarTester2{ public static void main(String[] args){ Scanner stdIn = new Scanner(System.in); System.out.println("車のデータを入力せよ。"); System.out.println("名前は:"); String name = stdIn.next(); System.out.println("車幅は:"); int width = stdIn.nextInt(); System.out.println("高さは:"); int height =stdIn.nextInt(); System.out.println("長さは:"); int length =stdIn.nextInt(); System.out.println("ガソリン量は:"); double fuel= stdIn.nextDouble(); Car myCar = new Car(name,width,height,length,fuel); while(true){ System.out.println("現在地("+myCar.getX()+","+myCar.getY()+")・残り燃料"+myCar.getFuel()); System.out.print("移動しますか[0…No/1…Yes]:"); if(stdIn.nextInt()==0) break; System.out.print("X方向の移動距離:"); double dx = stdIn.nextDouble(); System.out.print("Y方向の移動距離:"); double dy = stdIn.nextDouble(); if(!myCar.move(dx,dy)) System.out.println("燃料が足りません!"); } } } のファイルをCarTester2.javaという名前で保存しました。 この2つのファイルは同一フォルダに入っています。 それで、 javac CarTester2.javaという風にコンパイルしても 「エラー4  変数myCarのシンボルが見つけられません」 といった感じにコンパイルエラーとなってしまいます。 何が原因なのでしょうか?

  • Javaの問題

    (1) /* CarApp.java */ public class CarApp{ public static void main(String[] args){ Car c2 = new Car(4,45,5); System.out.println("乗員数:"+c2.getPeple()); System.out.println("タイヤ数:"+c2.getTire()); System.out.println("ガソリン残量:"+c2.getGas()); c2.setPeople(8); c2.ridePeople(10); c2.ridePeople(3); for(int i=0; i<179; i++) c2.speedUp(); for(int i=179; i<182; i++){ c2.showSpeed(); c2.speedUp(); } for(int i=0; i<179; i++) c2.speedDown(); for(int i=179; i<182; i++){ c2.showSpeed(); c2.speedDown(); } } } ____________________________________ /* Car.java */ class Car{ private int tire , people , speed ; //タイヤ数、乗員数、速度 private int 【****】,【***】; private double gas; //ガソリン public Car(int tire, double gas, int people){ this.tire = tire; this.gas = gas; this.people = people; speed = 180; nowPeople = 0; nowSpeed = 0; } public double getGas(){ 【****】} public int getPeople() { 【****】 } public int getTire() { 【****】 } public int getSpeed() { 【****】 } public void setSpeed(int speed){ this.speed = speed; } public void speedUp( ) { if(speed < nowSpeed+1 ){ 【****】 【****】 } else{ nowSpeed++; } } public void speedDown( ) { if(nowSpeed-1<0){ 【****】 else{ nowSpeed--; } } public void showSpeed( ) { 【****】 } public void setPeople(int people){ 【****】 showPeople( ); } public void ridePeople(int ride) { int tmp = nowPeople + ride; if(【****】 ) { 【****】; } else { 【****】; } showPeople( ); } public void showPeople( ) { System.out.println(【****】) ; } public void show(){ System.out.println("タイヤ数" + tire); System.out.println("ガソリン" + gas); System.out.println("乗員数:" + people); } } 実行結果 >java CarApp2 ガソリン残量:45.0 定員数:8 現在の乗員数:0 定員オーバーです 定員数:8 現在の乗員数:0 定員数:8 現在の乗員数:3 速度:180 現在の速度:179 速度:180 現在の速度:180 最大速度です 速度:180 現在の速度:180 最大速度です 速度:180 現在の速度:1 速度:180 現在の速度:0 既に停止しています 速度:180 現在の速度:0 既に停止しています ___________________ (2) /* RaceCarApp2.java */ public class RaceCarApp2{ public static void main(String[] args){ RaceCar2 rc2 = new RaceCar2("JapanTour", "TouringCar",350); System.out.println("乗員数:" + rc2.getPeople()); System.out.println("タイヤ数:" + rc2.getTire()); System.out.println("ガソリン残量:"+rc2.getGas()); rc2.show(); for(int i=0; i<349; i++) rc2.speedUp(); for(int i=349; i<352; i++){ rc2.showSpeed(); rc2.speedUp(); } for(int i=0; i<349; i++) rc2.speedDown(); for(int i=349; i<352; i++){ rc2.showSpeed(); rc2.speedDown(); } } } _______________________________ class RaceCar2 extends Car{ String raceName; String type; public RaceCar2( String raceName, String type , int speed ){ 【****】; //親のコンストラクタ this.raceName = raceName; this.type = type; 【****】; //スピード設定 } public void show(){ 【****】; 【****】; 【****】; } } 実行結果 >java RaceCarApp2 乗員数:0 タイヤ数:4 ガソリン残量:30.0 Type:TouringCar RaceName:JapanTour タイヤ数4 ガソリン30.0 乗員数:1 速度:350 現在の速度:349 速度:350 現在の速度:350 最大速度です 速度:350 現在の速度:350 最大速度です 速度:350 現在の速度:1 速度:350 現在の速度:0 既に停止しています 速度:350 現在の速度:0 既に停止しています __________________________ この様になるように【****】部分を埋め回答せよという問題です。 途中まで自分でやってみましたが、エラーが出てしまうため断念してしまいました。 回答お願いします。

  • 初心者で練習問題をしています

    Javaで練習問題をしています Carというclassを作成して(public, privateを明示) フィールドはStringでmake(型式),colour(色),intでfuel(燃料)です。 コントラクタを作成して、 car1:make(Ferarri),colour(red),intでfuel(100) car2:make(Volvo),colour(blue),intでfuel(200) car3 = car2、 ↓ car2では色をgreenにし、car3では燃料を20使うと car2:make(Volvo),colour(green),intでfuel(180) car3:make(Volvo),colour(green),intでfuel(180) 両方とも180になってしまいますが、 (greenはいっしょになってかまいません) car2の燃料を200のまま減らないようにするには どうしたらいいでしょうか どうぞよろしくお願いします。 Public class Car { . . public void setColour(String newColour) { colour = newColour; } public void useFuel(int amount) { fuel = fuel - amount; } public static void main(String[] args) { Car car2 = new Car(); car2.make = "Volvo"; car2.colour = "blue"; car2.fuel = 200; System.out.println("car2make="+car2.make); System.out.println("car2colour="+car2.colour); car2.toString(car2.colour,car2.make); Car car3 = new Car(); car3 = car2; car2.setColour("green"); System.out.println("car2colour=blue -> green"); System.out.println("car2colour="+car2.colour); System.out.println("car3colour="+car3.colour); car3.useFuel(20); System.out.println("car2fuel="+car2.fuel); System.out.println("car3fuel="+car3.fuel); } . .

    • ベストアンサー
    • Java
  • Javaの戻り値のコード

    Java初心者です。returnの例文で分からない所があります。 (1)考え方として car1.setNumGas(1234, 20.5); の時点で void setNumGas(int n, double g) はvoid setNumGas(1234, 20.5)になり 次にgetNum( ) そのものを引っ張ってきているので、 ナンバーを調べました という文字まで一緒に引っ張らないのでしょうか? なぜ 次の行のretun文だけを拾うのですか? (2)returnのイメージがまだ出来ていません。 int number = car1.getNum(); とした時点で int getNum()  にジャンプし、 その中の returnを見つけ、 そしてreturnが numを使っている所をコードを下に降りて順に探しに行く というイメージで合ってますか? -------------------------------------------------------------------- return num; →よーし探しに行こう! まずdouble getGas()の中 → うーんない 次にvoid setNumGas(int n, double g) の中 { num = n;    →   お、あった! nは今1234だな、だから表示結果は1234 --------------------------------------------------------------------------- こんな認識で合ってますでしょうか? class Car { int num; double gas; int getNum() { System.out.println("ナンバーを調べました。"); return num; } double getGas() { System.out.println("ガソリン量を調べました。"); return gas; } void setNumGas(int n, double g) { num = n; gas = g; System.out.println("車のナンバーを" + num + "にガソリン量を" + gas + "にしました。"); } void show() { System.out.println("車のナンバーは" + num + "です。"); System.out.println("ガソリン量は" + gas + "です。"); } } class Sample6 { public static void main(String[] args) { Car car1 = new Car(); car1.setNumGas(1234, 20.5); int number = car1.getNum(); double gasoline = car1.getGas(); System.out.println("サンプルから車を調べたところ"); System.out.println("ナンバーは"+ number + "ガソリン量は" + gasoline + "でした。"); } }

    • ベストアンサー
    • Java
  • javaのプログラムで分からない箇所があります

    public class Addkensaku { //読み込むファイルのパス private static final String FILE_PATH = ""; private static enum SearchMode { NAME, AGE, ADDR, REGIST, EXIT } private static final Map<String, SearchMode> modeMap; static { modeMap = new HashMap<String, Addkensaku.SearchMode>(); modeMap.put("1", SearchMode.NAME); modeMap.put("2", SearchMode.AGE); modeMap.put("3", SearchMode.ADDR); modeMap.put("5", SearchMode.REGIST); modeMap.put("9", SearchMode.EXIT); } public static void main(String[] args) throws IOException { BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); String mode = null; System.out.println("何をしますか?\n1.名前(ファーストネーム)で検索\n2.フルネームで検索\n3.年齢で検索\n4.都道府県で検索\n5.追加"); mode = buf.readLine(); if (!checkSearchMode(mode)) { System.out.println("入力値が不正です"); return; } // 読み込み List<Addr> allData = readData(FILE_PATH); SearchMode enmMode = modeMap.get(mode); // 検索 String keyword = null; List<Addr> answer = search(allData, enmMode, keyword); } private static List<Addr> readData(String path) { return null; } //ファイル書きこみ private static void writeData(String path) { } private static List<Addr> search(List<Addr> allData, SearchMode mode, String keyword) { if(SearchMode.NAME == mode){ } if (SearchMode.AGE == mode) { for (Addr record : allData) { record.getName(); } if(SearchMode.ADDR == mode){ } } return null; } private static boolean checkSearchMode(String value) { return modeMap.get(value) != null; } } クラスAddr.java public class Addr { private String name; private String age; private String add; //データ更新用メソッド public void setName(String name) { this.name = name; } public void setAge(String age) { this.age = age; } public void setAdd(String add) { this.add = add; } //参照メソッド public String getName() { return name; } public String getFirstName() { return name.split(" ")[1]; } public String getAge() { return age; } public String getAdd() { return add; } } 二つのクラスを使いテキストファイルの中身を読み込み検索しようとしています ですがパスの指定場所はあっているはずなのですがうまくファイルが読み込めなくここからどのように作っていけばいいかわからず困っています

  • クラスのフィールドの比較方法

    2つのクラスのフィールドを比較して、その結果を以下のように表示させたいのですが、どのようにプログラミングをすればいいのでしょうか? 例 class Car { String carname; int height; int width; int length; } class Garage { String garagename; int height; int width; int depth; } public class example { public static void main (String[] args) throws IOException { Car car[]; car = new Car[5]; System.out.println("車の情報を入力してください。"); BufferedReader br1 = new BufferedReader(new InputStreamReader(System.in); for(int i=0; i<5; i++){ car[i] = new Car(); System.out.println(i+1 + "台目の車の名前を入力してください。"); String str1 = br1.readLine(); System.out.println("車の高さを入力してください。"); String str2 = br1.readLine(); System.out.println("車の幅を入力してください。"); String str3 = br1.readLine(); System.out.println("車の長さを入力してください。"); String str4 = br1.readLine(); int h1 = Integer.parseInt(str2); int w1 = Integer.parseInt(str3); int l1 = Integer.parseInt(str4); car[i].carname = str1; car[i].height = h1; car[i].weith =w1; car[i].length =l1; } for(int i=0; i<5; i++){ garage[i] = new Garage(); System.out.println(i+1 + "つ目の車庫の名前を入力してください。"); String str5 = br2.readLine(); System.out.println("車庫の高さを入力してください。"); String str6 = br2.readLine(); System.out.println("車庫の幅を入力してください。"); String str7 = br2.readLine(); System.out.println("車庫の長さを入力してください。"); String str8 = br2.readLine(); int h2 = Integer.parseInt(str6); int w2 = Integer.parseInt(str7); int d2 = Integer.parseInt(str8); garage[i].garagename = str2; garage[i].height = h2; garage[i].weith =w2; garage[i].depth =d2; } } 出力例 garage1 car3 garage2 car5 garage3 car4 garage4 car2 garage5 car1 よろしくお願いします。

    • ベストアンサー
    • Java
  • 続き webアプリをつくってます。変数がなぜか渡りません。

    続き webアプリをつくってます。変数がなぜか渡りません。 見回ったのですが原因がわかりませんでした。 間違った箇所はどこですか。 package info.searchman; import java.io.*; import java.sql.*; //import java.util.*; public class ShinzinInfoTorokuBeans implements Serializable { /** * */ private static final long serialVersionUID = 1L; private String Id; private String name; private String old; private String taiju; private String shintyo; private String other; //Constructor public ShinzinInfoTorokuBeans() { System.out.println("sitb constructor"); } // Setter Methods public void setId(String Id) { this.Id = Id; } public void setName(String name) { this.name = name; } public void setOld(String old) { this.old = old; } public void setTaiju(String taiju) { this.taiju = taiju; } public void setShintyo(String shintyo) { this.shintyo = shintyo; } public void setOther(String other) { this.other = other; } // Getting Methods public String getId() { return this.Id; } public String getName() { return this.name; } public String getOld() { return this.old; } public String getTaiju() { return this.taiju; } public String getShintyo() { return this.shintyo; } public String getOther() { return this.other; } //execute insert public void insert() { try { System.out.println("++++" +Id); System.out.println("tib7 insert"); //JDBC Driver Class.forName("org.postgresql.Driver"); Connection con = DriverManager.getConnection("jdbc:postgresql:postgres","postgres","gokui"); Statement stmt = con.createStatement(); String table = "testweb"; String values = "(\'"+Id+"\', \'"+name+"\', \'" +old+"\', \'"+taiju+"\', \'"+shintyo+"\', \'"+other+"\')"; //System.out.println("Id"+"name"+"old"+"taiju"+"shintyo+other"); String insertsql = "insert into "+table+" values " + values; //sql stmt.executeUpdate(insertsql); //db close stmt.close(); con.close(); } catch (Exception ex) { System.out.println("Exception insertでエラー: " + ex.getMessage()); } } } ここまで

    • ベストアンサー
    • Java
  • "add"とは?f

    class Car { int num; double gas; void setNum(int n) { num = n; System.out.println("ナンバーを" + num + "にしました。"); } void setGas(double g) { gas = g; System.out.println("ガソリン量を" + gas + "にしました。"); System.out.println("この車は満タンで40リットル入ります。"); } void show() { System.out.println("車のナンバーは"+num+"です。"); System.out.println("ガソリン量は"+gas+"です。"); } } class Prog11_1 { public static void main(String args[]) { Car car1 = new Car(); Car car2 = new Car(); car1.setNum(1234); car1.setGas(20.5); car2.setNum(5678); car2.setGas(30.8); car1.addGas(10.0); car2.addGas(10.0); car1.show(); car2.show(); } } 上記のプログラムの足りないところを補い、完成させるというものなんですが、"add"というのは一体どのような役割を持っているものなんでしょうか? 分かる方いらっしゃいましたら、よろしくお願いします。

    • ベストアンサー
    • Java