首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >inputMismatchException java

inputMismatchException java
EN

Stack Overflow用户
提问于 2017-08-08 15:31:51
回答 2查看 85关注 0票数 0

(答:在开关的情况下,我忘记了我的断续声明,我猜这是在扔扫描仪!)

我正在编写一个程序来读取包含三种形状的文件,然后是它们对应的维度,然后将它们写入对象数组中。圆圈列出他们的半径,平方他们的边缘,但三角形他们的基础和高度!我写了一些对我来说合乎逻辑的东西,但是我的代码会抛出InputMismatchException错误,而且我很难找到我要出错的地方。

扫描器读取的文件很简单,A字符串,后面跟着1或(如果该字符串是三角形)2加倍。我想我应该为三角形的高度创建一个变量,在字符串是三角形的情况下,它应该将另一个双倍读入这个变量。但它会抛出一个mismatchException?

代码语言:javascript
复制
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”正在读取的示例。

代码语言:javascript
复制
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类如下所示

代码语言:javascript
复制
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
}
EN

回答 2

Stack Overflow用户

发布于 2017-08-08 15:43:11

我没有在您的代码中看到任何错误,可能是在您的文件中没有在这里张贴的一个部分,在三角形旁边没有浮点值。

代码语言:javascript
复制
double nextDouble()

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

请哭泣,捕捉例外,打印它,以看到更多的见解。

票数 0
EN

Stack Overflow用户

发布于 2017-08-08 15:54:24

您的问题是输入文件。我去掉了点,用了逗号,一切都很好。尝试以下输入:

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45572448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档