文本文件行 reader- java
textfile line reader- java
ArrayList <Integer> referenceNom = new ArrayList <Integer>();
ArrayList <String> bookTitle = new ArrayList <String>();
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader("Booklist.txt"));
while ((br.readLine()) != null ){
for (int count = 1; count <= 44; count++){
if (count % 2 == 1){
referenceNom.add(Integer.parseInt(br.readLine()));
System.out.print(referenceNom.get(count));
}else {
bookTitle.add(br.readLine());
System.out.print(bookTitle.get(count));
}
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
br.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
我正在尝试创建一个 reader 来读取文本文件的行,在本例中是 "Booklist.txt"。问题是我不断收到 java.lang.NumberFormatException 错误。文本文件由 44 行组成,第一行是一个数字,第二行是书名,第三行也是一个数字,依此类推。我试图创建一个 reader 来检查行号是偶数还是奇数,并根据它将该行文本添加到整数数组列表或字符串数组列表中。数字的整数数组列表和书名的字符串数组列表。我还尝试通过创建一个计数器来跟踪行号,该计数器在每次读取一行时加 1。
非常感谢任何帮助,提前致谢。
你"throw away"第一行。因此,您首先获得第一个标题,而不是第一个数字。您应该只使用 1 个循环,而不是 while 循环和 for 循环:
String line;
while ((line = br.readLine()) != null ){
referenceNom.add(Integer.parseInt(line));
bookTitle.add(br.readLine());
}
或
for (int count = 1; count <= 44; count++){
if (count % 2 == 1){
referenceNom.add(Integer.parseInt(br.readLine()));
} else {
bookTitle.add(br.readLine());
}
}
应该可以。
int count = 0;
String line = null;
while (line = (br.readLine() != null)) {
if (count % 2 == 0) {
referenceNom.add(Integer.parseInt(line));
} else {
bookTitle.add(line);
}
count++;
}
如有不明之处请告诉我。
首先,将读取的行存储在变量
String line=br.readLine();
然后你可以使用一个Try-Cach来识别那种值,所以你的代码可能是这样的:
String line=null;
while ((line=br.readLine()) != null ){
try{
referenceNom.add(Integer.parseInt(line));
System.out.print(referenceNom.get(count));
}catch(java.lang.NumberFormatException e){
bookTitle.add(line);
System.out.print(bookTitle.get(count));
}catch(Exception e){
//Unexpected Exception
e.printStackTrace();
}
}
像这样,行数可能多于或少于 44 行,您无需更改代码
ArrayList <Integer> referenceNom = new ArrayList <Integer>();
ArrayList <String> bookTitle = new ArrayList <String>();
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader("Booklist.txt"));
while ((br.readLine()) != null ){
for (int count = 1; count <= 44; count++){
if (count % 2 == 1){
referenceNom.add(Integer.parseInt(br.readLine()));
System.out.print(referenceNom.get(count));
}else {
bookTitle.add(br.readLine());
System.out.print(bookTitle.get(count));
}
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
br.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
我正在尝试创建一个 reader 来读取文本文件的行,在本例中是 "Booklist.txt"。问题是我不断收到 java.lang.NumberFormatException 错误。文本文件由 44 行组成,第一行是一个数字,第二行是书名,第三行也是一个数字,依此类推。我试图创建一个 reader 来检查行号是偶数还是奇数,并根据它将该行文本添加到整数数组列表或字符串数组列表中。数字的整数数组列表和书名的字符串数组列表。我还尝试通过创建一个计数器来跟踪行号,该计数器在每次读取一行时加 1。
非常感谢任何帮助,提前致谢。
你"throw away"第一行。因此,您首先获得第一个标题,而不是第一个数字。您应该只使用 1 个循环,而不是 while 循环和 for 循环:
String line;
while ((line = br.readLine()) != null ){
referenceNom.add(Integer.parseInt(line));
bookTitle.add(br.readLine());
}
或
for (int count = 1; count <= 44; count++){
if (count % 2 == 1){
referenceNom.add(Integer.parseInt(br.readLine()));
} else {
bookTitle.add(br.readLine());
}
}
应该可以。
int count = 0;
String line = null;
while (line = (br.readLine() != null)) {
if (count % 2 == 0) {
referenceNom.add(Integer.parseInt(line));
} else {
bookTitle.add(line);
}
count++;
}
如有不明之处请告诉我。
首先,将读取的行存储在变量
String line=br.readLine();
然后你可以使用一个Try-Cach来识别那种值,所以你的代码可能是这样的:
String line=null;
while ((line=br.readLine()) != null ){
try{
referenceNom.add(Integer.parseInt(line));
System.out.print(referenceNom.get(count));
}catch(java.lang.NumberFormatException e){
bookTitle.add(line);
System.out.print(bookTitle.get(count));
}catch(Exception e){
//Unexpected Exception
e.printStackTrace();
}
}
像这样,行数可能多于或少于 44 行,您无需更改代码