プロが教える店舗&オフィスのセキュリティ対策術

少し長いですが、以下にコードを書きました。これでコンパイルすると、13個ほどエラーが出て、何がなんだかわかりません。何が間違っているのでしょうか?よろしくお願いします。ちなみに本を見ながらの独学です。
//のりものインターフェイス
interface iVehicle
{
abstract void show();
}
//車くらす
class Car implements iVehicle
{
private int num;
private double gas;

public Car(int n, double g))
{
num = n;
gas = g;
System.out.println("ナンバー" + num +"ガソリン量" + gas +"の車を作成しました");
}
public void show()
{
System.out.println("車のナンバーは" + num +"です");
System.out.println("ガソリン量は" + gas +"です");
}
}
//飛行機クラス
class Plane extends Vehicle
{
private int flight;

public Plane(int f)
{
flight = f;
System.out.println("便" + flight +"の飛行機を作成しました");
}
public void show()
{
System.out.println("飛行機の便は" + flight +"です");
}
}
class sample8
{
public static void main(String args[])
{
iVehicle ivc[];
ivc = new iVehicle[2];

ivc[0] = new Car(1234, 20.5);

ivc[1] = new Plane(232);

for(int i=0; i<ivc.length; i++){
if(vc[i] instanceof Car)
ivc[i].show();
}
}
}

A 回答 (2件)

「コンパイルができない」という話ですよね。

また、タイプミスのレベルだと
思うんですが、とりあえず、全部指摘しておきます。

(1) for(int i=0; i<vc.length; i++){
(2)   if(vc[i] instanceof Car)
(3)     System.out.println((i+1)+"番目のオブジェクトはCarクラスです");
(4)   else
(5)     Sytem.out.println((i+1)+"番目のオブジェクトはCarクラスではありません");
(6)   }
(7) }

(1) vc.length → ivc.length
(2) vc[i] → ivc[i]
(5) Sytem → System
(6) 余分な }

といったところです。
    • good
    • 0
この回答へのお礼

ありがとうございした。しっかりと
指摘してもらえたのでなんとか直せました。
タイプミスって本人見つけにくいんですよね、
でもあまりにも自分は多すぎるので気をつけます。

お礼日時:2001/05/20 12:40

ほとんどがタイプミスですね。

気を落ち着けてコンパイルエラーのメッセージを見ましょう。
//のりものインターフェース の行を第1行として、

% diff -w a.java.orig a.java
12c12
< public Car(int n, double g))
---
> public Car(int n, double g)

かっこが一つ多いです。

25c25
< class Plane extends Vehicle
---
> class Plane implements iVehicle

iVehicle のタイプミス、と、iVehicle はインターフェースなので、
extends ではなく、implements ですね。

51c51
< if(vc[i] instanceof Car)
---
> if(ivc[i] instanceof Car)

変数のタイプミス。


動作させてみると、

% java sample8
ナンバー1234ガソリン量20.5の車を作成しました
便232の飛行機を作成しました
車のナンバーは1234です
ガソリン量は20.5です

とでます。

この回答への補足

ありがとうございました。タイプミスとは・・恥ずかしい限りです。
ところで、前回のは無事実行出来たのですが、類似コードでinstanceof演算子を以下のように使ったコードをコンパイルすると、シンボル処理できません。
シンボル:クラス・out
位置  :Systemのパッケージ
System.out.prinntln(***~else以下の分のところです と出ます。これはどういうことなのでしょうか?
教えてください。

for(int i=0; i<vc.length; i++){
if(vc[i] instanceof Car)
System.out.println((i+1)+"番目のオブジェクトはCarクラスです");
else
Sytem.out.println((i+1)+"番目のオブジェクトはCarクラスではありません");
}
}

補足日時:2001/05/18 20:11
    • good
    • 0

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