读取文本文件中包含整数和字符串的数据-Java

读取文本文件中包含整数和字符串的数据-Java,java,Java,我已经读取了该文件,它应该在控制台上打印出数据,但问题是我收到了以下错误消息:线程“main”java.lang.NumberFormatException中的异常:对于输入字符串:“未知”。我已经把最大长度作为一个整数,但是如何把它作为一个字符串呢 以下是我迄今为止所做的工作: import java.util.*; import java.io.*; public class Task1 { public static void main(String[] args) {

我已经读取了该文件,它应该在控制台上打印出数据,但问题是我收到了以下错误消息:线程“main”java.lang.NumberFormatException中的异常:对于输入字符串:“未知”。我已经把最大长度作为一个整数,但是如何把它作为一个字符串呢

以下是我迄今为止所做的工作:

import java.util.*;
import java.io.*;

public class Task1 {
    public static void main(String[] args) {        

        List<Person> personFile = new ArrayList<>(); 

        try {            
            BufferedReader br = new BufferedReader(new FileReader("people-data.txt"));
            String fileRead = br.readLine();
            while (fileRead != null) {
                String[] peopleData = fileRead.split(":");
                String commonName = personData[0];
                String latinName = personData[1];
                int maximumLength = Integer.parseInt(personData[2]);
                Person personObj = new Person(commonName, latinName, maximumLength);
                personFile.add(personObj);
                fileRead = br.readLine();
            }
            br.close();
        }

        catch (FileNotFoundException ex) {            
            System.out.println("File not found!");
        } 

        catch (IOException ex) {             
            System.out.println("An error has occured: " + ex.getMessage());
        }

        System.out.println(personFile);
    }
}
文本文件:

Alisha Khan:Cephaloscyllium ventriosum:100
Jessica Lane:Galeocerdo cuvier:UNKNOWN
Michael Brown:Sphyrna mokarren:600
...

你应该教你的代码你的未知约定。当前代码将其视为数字。

输入文件中的这一行:

Jessica Lane:Galeocerdo cuvier:UNKNOWN
是导致代码中此行出现问题的原因:

int maximumLength = Integer.parseInt(personData[2]);
因为
parseInt
UNKNOWN
上抛出
NumberFormatException
。你需要决定在这种情况下你想做什么。例如,当遇到无效整数时,此代码将把
maximumLength
保留为默认值-1:

int maximumLength = -1;
try {
    int maximumLength = Integer.parseInt(personData[2]);
} catch (NumberFormatException e) {
}

我想把它打印为未知,我是否必须使用System.out.println?当然,当您打印它时,只需检查值是否为-1(或您在解析时为“未知”选择的任何固定值),如果为-1,则打印“未知”,否则打印实际值。
int maximumLength = -1;
try {
    int maximumLength = Integer.parseInt(personData[2]);
} catch (NumberFormatException e) {
}