inputMismatchException java

时间:2017-08-08 15:31:52

标签: java inputmismatchexception

(答案:在转换的情况下,我忘记了我的休息声明,我猜这是关闭了扫描仪!)

我正在编写一个程序来读取包含三种形状的文件,然后是相应的维度并将它们写入一个对象数组。圆圈列出它们的半径,方形它们的边长,但对于三角形它们的基础和高度!我写了一些对我来说合乎逻辑的东西,但是我的代码抛出了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
}

2 个答案:

答案 0 :(得分:0)

我没有看到您的代码中有任何错误,可能在您的文件中未发布的部分文件中,三角形旁边没有浮动值

//tr/td/img[@alt="telephone"]/parent::td/following-sibling::td

将下一个标记作为long返回。如果下一个标记不是浮点数或超出范围,则抛出InputMismatchException。

请抓住Exception打印它以查看更多见解。

答案 1 :(得分: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