簡體   English   中英

inputMismatchException java

[英]inputMismatchException java

(回答:在切換的情況下,我忘記了break語句,我想那就是把掃描儀丟掉了!)

我正在編寫一個程序來讀取包含三種形狀的文件,然后是它們的相應尺寸,並將它們寫入對象數組。 圓形列出了它們的半徑,正方形列出了它們的邊長,但三角形列出了它們的底和高度! 我寫了對我來說合乎邏輯的東西,但是我的代碼引發了InputMismatchException錯誤,並且我無法找到我要去哪里。

掃描程序讀取的文件很簡單,一個字符串,后跟1或(如果字符串是一個三角形)2則加倍。 我想我會為三角形的高度創建一個變量,並且在字符串是Triangle的條件下,它應該將另一個double讀入該變量。 但是會拋出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
}

我沒有在您的代碼中看到任何錯誤,可能是您文件中未發布的零件上的錯誤,三角形旁邊沒有浮點值

double nextDouble()

返回下一個令牌作為long。 如果下一個令牌不是浮點型或超出范圍,則拋出InputMismatchException。

請哭着捕捉Exception並打印出來以了解更多見解。

您的問題是輸入文件。 我刪除了點並使用逗號,一切正常。 嘗試以下輸入:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM