2017-08-08 14 views
0

(ANSWER:スイッチケースで、私は私のbreak文を忘れてしまったと私はそれがスキャナをオフに投げていたと思います!)inputMismatchException javaの

は、私は形の3種類が含まれているファイルを読むためにプログラムを書いています対応する次元が続き、それらをオブジェクト配列に書き込みます。サークルは半径をリストし、エッジの長さを正方形にしますが、三角形についてはベースと高さを指定します。私には論理的だと書いていましたが、コードがInputMismatchExceptionのエラーをスローし、私が間違っている場所を見つけるのが難しいです。

スキャナが読み取るファイルは簡単です。文字列の後に1または(文字列が三角形の場合)2つの2倍になります。私は、三角形の高さの変数を作成し、その文字列が三角形であるという条件の下で、別の倍精度をその変数に読み込む必要があると考えました。しかし、不一致例外がスローされますか?

for (int i = 0; fs.hasNext(); i++) { 
    String word = fs.next(); 
    double field = fs.nextDouble(); 
    double triangleH = 0.0; 
    switch (word) { 
    case circle: 
    shape[i] = new Circle(field); 
    case square: 
    shape[i] = new Square(field); 
    case triangle: 
    triangleH = fs.nextDouble(); 
    //^^^line where the error is thrown 
    shape[i] = new IsoscelesTriangle(field, triangleH); 
    } 
} 

これは 'fs'ファイルのサンプルです。

triangle 385.64 796.55 
circle 455.71 
triangle 697.73 261.17 
circle 273.11 
triangle 1051.95 879.48 
triangle 425.96 772.16 
square 864.19 

二等辺三角形クラスは、私はあなたのコード内の任意のエラーが表示されないこの

public class IsoscelesTriangle implements Shape { 
    private double base = 0.0; 
    private double height = 0.0; 
    private double area = 0.0; 

    public IsoscelesTriangle(double b, double h) { 
    setBase(b); 
    setHeight(h); 
    setArea(b, h); 
    } 
    //more methods 
} 
+0

私たちは、二等辺三角形の方法で二重、二重を受け入れますか? –

+0

公開IsoscelesTriangle(double b、double h){ setBase(b); setHeight(h); setArea(b、h); ; } –

+1

@JasonVanBenschotenそれはクラスです。そのクラスにはコンストラクタがありますか? – Jeyaprakash

答えて

0

のように見え、ここに掲載されなかった部分に、あなたのファイルであってもよいfloat値はありません三角形の隣に

double nextDouble() 

次のトークンをlongとして返します。次のトークンが浮動小数点数ではなく、範囲外である場合、InputMismatchExceptionがスローされます。

例外をキャッチして泣いて、より多くの洞察を見てください。

+0

私はちょうど私がばかだと気付きましたが、私は何のブレークステートメントも入れていませんでした。 –

0

問題は入力ファイルです。私はドットを削除し、カンマを使用し、すべて正常に動作します。この入力を試してみてください:

triangle 385,64 796,55 
circle 455,71 
triangle 697,73 261,17 
circle 273,11 
triangle 1051,95 879,48 
triangle 425,96 772,16 
square 864,19 
関連する問題