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

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

0

エラーが出るんです。

 car  d  =  new  car();
のところがおかしいと怒られるんですが
どうなおせばいいか
教えてください。    


class   miss   extends  Exception{

    }  

    
    class     car{
            private   int           num;
            private   double    gas;

            public   car(){
                    num = 0;
                    gas   = 0.0;
                    System.out.println( "車作成"  );
            }
  
            public  void   method(  int  n,  double g  )    throws   miss{
                 if( g < 0 ){
                  miss   e   =  new  miss();
                  throw  e;
                 }else{
                                            num  = n;
                  gas   = g;
                  System.Out.println( "ナンバ" + num  + "ガソリン量" + gas );
                 }
            }

             public  void  show(){
                               System.Out.println( "車ナンバ" + num  );
                               System.Out.println( "ガソリン量" + gas  );
            }
    }


    class   c{
             public  static  void  main(  String  arg[] ){
                     car  d  =  new  car();
        try{
                 d.method( 1234,  -10.0  );
         }catch(  miss e ){
                 System.out.println( e + "が送出されました"  );
        }
                     d.show();
               }
    }



20

回答

83824

閲覧

20件の回答

評価

0

System.Out.println
これじゃコンパイルも通らないのですが…。


>car  d  =  new  car();
>のところがおかしいと怒られるんですが

誰に?

評価

0

早速回答どうも!

System.out.println を直したんですが。 

car  d  =  new  car();

で怒られてしまいます。
解ればよろしくです。

評価

0

>おかしいと怒られるんですが
こういう曖昧な書き方はやめましょう。

評価

0

>car  d  =  new  car();
>で怒られてしまいます。

誰に・・・?

色々なおしました。
class GasolineException extends Exception {
    private static final long serialVersionUID = 1L;
public GasolineException(String massage){
    super(massage);    
}
}
class Car {
    private int carNumber;
    private double gasoline;
    public Car(int carNumber, double gasoline) {
        this.gasoline = gasoline;
        this.carNumber = carNumber;
        System.out.println("車作成");
    }
    public void method() throws GasolineException {
        if (this.gasoline < 0) {
            GasolineException e = new GasolineException("ガソリン量が負です");
            throw e;
        } else {
            System.out.println(this);
        }
    }
    @Override
    public String toString() {
        return "ナンバ" + carNumber + "ガソリン量" + gasoline;
    }
}
public class CarCreator {
    public static void main(String arg[]) {
        Car d = new Car(1234, -10.0);
        try {
            d.method();
            System.out.println(d);
        } catch (GasolineException e) {
            e.printStackTrace();
        }    
    }
}

評価

0

ちなみに、
>誰に?
といったのは、
コンパイラには怒られないからです。

エラーがでます。と書いてありましたが、
コンパイルエラーはOutだけでした。

自分が意図した例外以外の例外、
又はエラーが出るのであれば、
エラー内容をそっくりそのまま貼り付けてください。

昨日海外から帰ってきたといわれて、
何処の国に行ってきたかは想像できませんので(・ω・`)。

評価

0

お前が言う「怒られる」時の表示をそのままコピペしろ。

余計なことは考えるな。
まずは、ただ1つのことをやれ。

評価

0

どうも
エディタを実行すると
コンパイラで怒られるんです。

シンボル: クラス car  
位置    : c の クラス
                     car  d  =  new  car();
                         ^
c.java:4: シンボルを解釈処理できません。
シンボル: クラス car  
位置    : c の クラス
                     car  d  =  new  car();
                                         ^
エラー 2 個


評価

0

各クラスは別のファイルにしていますか?
クラスパスなどが合っていない可能性があります。

コマンドプロンプトで実行されているなら、
java -cp [c.classがあるディレクトリ] [実行ファイル名]

で実行してみてください。
クラスファイルを特定の場所においてあるのであれば、
クラスパスの設定をしておくと楽ですよ。
http://java.sun.com/j2se/1.3/ja/docs/ja/tooldocs/solaris/classpath.html

評価

0

訂正。

>java -cp [c.classがあるディレクトリ] [実行ファイル名]

java -cp [car.classがあるディレクトリ] [実行ファイル名]

評価

0

どうも
>誰に?
といったのは、
コンパイラには怒られないからです。

ということで
一度フォルダにあった
ソースやフォルダを全部削除して実行したところコンパイルできました!

教えていただいたコードが難しいしところもありますが参考にしてみます。
お騒がせしてすみませんです。
本当にどうもありがとうございました!!


            へっぽこきら

評価

0

実行できて良かったですね。
# 古いクラスファイルが残ってたのかな・・・?

私が提示したソースに関して、
疑問があったら追記でも結構ですのでご質問下さい。
# コメントも何も入れませんでしたし。
出来る範囲で回答します。

評価

0

すいません。1つ教えてください。

public GasolineException(String massage){
    super(massage);    
}

このsuperは Exceptionクラスのコンストラクタを呼び出しているんでしょうか?

評価

0

Eclipseだとctrl+クリックすると分かる。

評価

0

回答どうもです。
Eclipseだとctrl+クリックすると分かる。
そうなんですか憶えときます。

私は Cpadというエディタをつかってるんで残念です

評価

0

まあ、superの意味が分かっているなら確かめるまでもないと思うけど…。

評価

0

>このsuperは Exceptionクラスのコンストラクタを呼び出しているんでしょうか?

そうです。
因みにExceptionクラスのコンストラクタでも、
そのsuper()、Throwableのコンストラクタを呼び出しています。

Throwableのコンストラクタのなかでは、
fillInStackTraceメソッド
(新規作成されたスロー可能オブジェクト内のスタックトレースデータを初期化)
を呼んだあと、
引数に受け取った(ここでは)messageを、
フィールドに代入しています。

Throwableのソースを見るといいかもしれないですね。
jdkにsrcはある(と思う)ので。


評価

0

きらさんへ
直接プログラムとは関係ないですが、
掲示板等で人の発言を引用するときは「>」をつけたり、
どこからどこまで引用部分とわかるようにした方がいいですよ。

例えば・・・・
きらさんは、2008-03-06 16:13の発言で、

どうも
>誰に?
といったのは、
コンパイラには怒られないからです。

と書かれていますが、
「>誰に?
といったのは、
コンパイラには怒られないからです。」
は、コロさんの発言を引用していますよね?
こういう場合、

どうも
> >誰に?
> といったのは、
> コンパイラには怒られないからです。

と書かれるだけで、「ああ、どうも、以降の文は他からの引用だな」って分かりやすく、回答がしやすくなります。

以上、よけいな回答でした。

評価

0

>どうでもいいけど 様
>マッサージ

ほんとだwwwww
全く気がつきませんでしたwwww


評価

0

わらた。

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