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