2017-08-08 77 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 
相关问题