Java 解析文本文件以填充哈希映射
下面是我得到的错误:Java 解析文本文件以填充哈希映射,java,file,parsing,hashmap,text-files,Java,File,Parsing,Hashmap,Text Files,下面是我得到的错误: 错误:未报告的异常IOException;必须被抓住或宣布被抛出 您的方法lireBddParcs被声明为抛出一个IOException,因此您的代码不会编译,因为您的main方法没有处理它。出于您的目的,您可能会发现将抛出的添加到main方法也是最简单的: /** * @(#)b.java * * * @author * @version 1.00 2012/5/4 */ import java.util.*; import java.io.*; import
错误:未报告的异常IOException;必须被抓住或宣布被抛出
您的方法lireBddParcs
被声明为抛出一个IOException
,因此您的代码不会编译,因为您的main
方法没有处理它。出于您的目的,您可能会发现将抛出的
添加到main
方法也是最简单的:
/**
* @(#)b.java
*
*
* @author
* @version 1.00 2012/5/4
*/
import java.util.*;
import java.io.*;
import java.*;
public class b {
static void lireBddParcs(String nomFichier) throws IOException
{
LinkedHashMap parcMap = new LinkedHashMap<Parc,Collection<Manege>> ();
int n = 0;
boolean existeFichier = true;
FileReader fr = null;
try
{
fr = new FileReader (nomFichier);
}
catch(java.io.FileNotFoundException erreur)
{
System.out.println("Probleme rencontree a l'ouverture du fichier" + nomFichier);
existeFichier = false;
}
if (existeFichier)
{
BufferedReader entree = new BufferedReader(fr);
boolean finFichier = false;
while(!finFichier)
{
String[] line = entree.readLine().split("/t");;
Parc p = new Parc(line[0], line[1], line[2]);
if (line == null)
{
finFichier = true ;
}
else
{
parcMap.put(p, null);
}
}
entree.close();
}
}
/**
* @param args the command line arguments
*/
public static void main(String[] args)
{
lireBddParcs("parcs.txt");
}
}
或者,您可以使用
try/catch
语句包围对lireBddParcs
的调用,并将异常记录在某个地方。java.io.IOException
是选中的异常,这意味着如果您调用任何声明抛出IOException
的方法,您必须捕获异常或在方法定义中声明它
希望本教程能有所帮助:线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:1在b.lirebdParcs(b.java:54)在b.main(b.java:101)因此
split
没有返回至少包含3个元素的数组。那么你应该试着去理解为什么。显然,您使用“/t”作为分隔符。我猜您是指线程“main”java.lang.NullPointerException中的“\t”.Exception在b.main(b.java:101)中的b.lireBddParcs(b.java:53)在b.main(b.java:101)在检查它是否为Null之前,您将在文件末尾得到一个npe,因为您使用了“line”?我试了些东西,但没用。
public static void main(String[] args) throws IOException { ... }