Java只从文件文件中获取数字:Integer.ParseInt抛出NumberFormatexception

时间:2015-11-10 04:23:53

标签: java

我需要帮助完成我的任务。 我的作业要求我从文本文件中计算考试成绩。

例如,我的文本文件(" input.txt")显示了这一点:

Lois Lane,         100, 98, 95, 90, 93, 88, 92
Marie Calendar,    85, 82, 88, 78, 85, 86, 90
Bob Marley,        70, 75, 72, 78, 80, 82, 76
Tom Brady,         82, 90, 88, 95, 92, 86, 87
Clark Kent,        99, 98, 100, 96, 100, 97, 95
Sandra Dee,        95, 93, 90, 100, 98, 89, 92

我希望能够只计算得分(按列)。

我成功读取了该文件。但是,我很难弄清楚为什么Integer.ParseInt会抛出" NumberFormatException"。

这是我到目前为止的代码。

public class testAvg {

public static int main(String[] args) throws IOException {

    String token1 = " ";

    Scanner inFile = new Scanner(new File("input.txt")).useDelimiter(",\\s*[a-z][A-Z]");

    List<String> inputs = new ArrayList<String>();

    while (inFile.hasNext()) {
        token1 = inFile.next();
        inputs.add(token1);
    }
    inFile.close();


    String[] inputsArray = inputs.toArray(new String[1]);

    int parsedArray = 0;

    for (int i = 0; i < inputsArray.length; i++) {
        parsedArray = Integer.parseInt(inputsArray[i]);   // This line throws the exception
    }
    return parsedArray;

} 
}

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:1)

由于这是一项家庭作业,我不打算给你完整答案,但你应该忘记Scanner

使用BufferedReader,然后调用readLine()方法。使用split("\\s*,\\s*")拆分该行。返回的数组的名称位于[0],数字位于[1] ... [7]。请致电parseInt()

答案 1 :(得分:0)

inputsArray[0]将包含

  

Lois Lane,100,98,95,90,93,88,92

     

Marie Calendar,85,82,88,78,85,86,90

     

Bob Marley,70,75,72,78,80,82,76

这就是为什么它无法解析该字符串。

Integer.parseInt()仅采用String格式的数字

答案 2 :(得分:0)

你看到了你的代码

 for (int i = 0; i < inputsArray.length; i++) {
        parsedArray = Integer.parseInt(inputsArray[i]);   // This line throws the exception
    }

将抛出错误,因为存在无法转换为int的String值。

使用此代码

import java.awt.List;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;

    public class testAvg {

        public static void main(String[] args) throws IOException {
            int[] receivedArray = getArray();
            System.out.println("The received array is");
            for (int i : receivedArray) {
                System.out.println(i);
            }
        }

        public static int[] getArray() throws FileNotFoundException {
            String line;

            Scanner inFile = new Scanner(new File("input.txt"));
    //        inFile.useDelimiter(",");

            ArrayList<Integer> inputs = new ArrayList<Integer>();

            while (inFile.hasNextLine()) {
                line = inFile.nextLine();//use nextLine to get the complete line
                String nums = line.substring(1 + line.indexOf(",")).replace(" ", "");//removing the name from each line
                String[] num = nums.split(",");//split the nums
                for (String number : num) {
                    inputs.add(Integer.parseInt(number));//Directly parsing the int values
                }
            }
            inFile.close();
            int[] passedArray = new int[inputs.size()];
            for (int i = 0; i < inputs.size(); i++) {
                passedArray[i] = inputs.get(i);//converting to int
            }
            return passedArray;
        }
    }