输入文件第一行时Java中的NumberFomatException错误

问题描述

我正在尝试为本地Java挑战输入权重文件,考虑每行中权重的总和是否低于5磅的权重限制。它产生一个NumberFormatException。有什么想法吗?

import java.util.*;
import java.io.*;
import static java.lang.System.*;

public class Main {

  public static void main(String[] args) throws IOException {
    Scanner input = new Scanner(new File("postofficedat.txt"));

    int lines = Integer.parseInt(input.nextLine());

    for (int i = 0; i < lines; i++) {
      double sum = .4;

      for (int x = 0; x < 7; x++) {
        sum = sum + input.nextDouble();
      }

      if (sum < 5) {
        System.out.println("OK");
      } else {
        System.out.println("OVERWEIGHT");
      }

      if (i < lines - 1) {
        input.nextLine();
      }
    }
    input.close();
  }
}

这是输入文件,第一行是行数,后几行是权重:

3
1.21 0.33 1.42 0.90 0.45 1.30 0.30
1.20 0.59 1.23 0.99 0.05 0.10 0.07
0.62 0.61 0.63 0.64 0.65 0.66 2.67

这是错误

Exception in thread "main" java.lang.NumberFormatException: For input string: "3"
    at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.base/java.lang.Integer.parseInt(Integer.java:652)
    at java.base/java.lang.Integer.parseInt(Integer.java:770)
    at Main.main(Main.java:27)

解决方法

您正在尝试使用Scanner获取整数。 Scanner提供了几种方便的方法,可让您阅读各种类型的内容。

.nextLine()将尝试以字符串形式在下一行读取,如果您想将其作为int

处理,则需要类型转换

您可以使用方法.nextInt()提取下一个整数。