2017-08-08 72 views
0

(答案:在開關情況下,我忘了我的break語句,我想這是扔掃描儀電源!)InputMismatchException時的java

我正在寫一個程序來讀取含有三種形狀的文件,然後是相應的維度並將它們寫入對象數組中。圓圈列出了它們的半徑,將它們的邊緣長度進行了平方,但對於三角形,它們的基準和高度!我寫了對我來說合乎邏輯的東西,但是我的代碼會拋出InputMismatchException錯誤,並且無法找到我要出錯的地方。

掃描儀讀取的文件很簡單,一個字符串,後跟1或(如果字符串是三角形)2加倍。我想我會爲三角形的高度創建一個變量,並且在字符串是三角形的情況下,它應該讀入另一個變量。但它會引發mismatchException?

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 

的IsoscelesTriangle類看起來像這樣

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

public isoscelesTriangle(double b,double h){setBase(b);} setHeight(h); setArea(b,h); } –

+1

@JasonVanBenschoten這是一堂課。這個類是否有構造函數? – Jeyaprakash

回答

0

我沒有看到任何錯誤代碼,可能是您的,這不是在這裏發表的部分文件沒有一個浮點值在三角形旁邊

double nextDouble() 

以長整數形式返回下一個標記。如果下一個標記不是浮點數或超出範圍,則拋出InputMismatchException。

請大聲疾呼,打印出來看看更多見解。

+0

我剛剛意識到我是個白癡,我沒有放入任何break語句。現在錯誤消失了! –

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