我当前遇到的问题是我的CVSParser的IF语句不起作用。国家名称“德国”不存在,可以,但是当发生此错误时,字符串notf不返回,而是得到:
“ java.lang.IllegalArgumentException:找不到德国的映射,应该是[国家/地区,出口,价值(美元)]之一”。
我假定正在返回的值是一个空值,因为CVSParser返回了一个String,但是,为countryName分配一个空值并不能使我的代码正常工作。
使用测试仪时出现问题。
我需要采取哪些步骤进行修复?同样,总的来说,当要查找的方法不存在时,如何确定方法返回的值? (特别是当它不在文档中时。)
public String countryInfo (CSVParser parser,String country){
FileResource fr = new FileResource();
String exports= "";
String countryName= "";
String value= "";
for (CSVRecord record : parser){
exports=record.get("Exports");
countryName=record.get(country);
value= record.get("Value");
if (exports== null ||countryName!= country){
String notf= "info has not been found";
return notf;
}
}
String info= countryName +":"+ exports;
return info;
}
public void tester (){
FileResource fr = new FileResource();
CSVParser parser = fr.getCSVParser();
countryInfo(parser,"Germany");
}
答案 0 :(得分:0)
@HovercraftFullOfEels注释是正确的。
但是例外说明
“ java.lang.IllegalArgumentException:找不到德国的映射, 预期为[国家/地区,出口,价值(美元)]之一“
测试代码会导致通话
countryName=record.get("Germany");
异常表明应该存在的地方
countryName=record.get("Country");
因此,如果您想要有关德国出口的信息,则代码应为
public String countryInfo (CSVParser parser,String desiredCountry){
FileResource fr = new FileResource();
String exports= "";
String countryName= "";
String value= "";
for (CSVRecord record : parser){
exports=record.get("Exports");
countryName=record.get("Country");
value= record.get("Value");
if (exports== null || !countryName.equals(desiredCountry)){
String notf= "info has not been found";
return notf;
}
}
String info= countryName +":"+ exports;
return info;
}
public void tester (){
FileResource fr = new FileResource();
CSVParser parser = fr.getCSVParser();
countryInfo(parser,"Germany");
}
答案 1 :(得分:0)
我意识到我只需要稍微更改一下代码即可工作。我没有检查CountryName的值,而是检查CVSParser中是否存在该值。如果不存在,我给x赋值为“找不到信息”的字符串。如果信息是它们的信息,则x分配了导出,值等。我不得不重新考虑我的问题,而不要使其变得比必须的复杂。
public String countryInfo (CSVParser parser,String country){
String exports= "";
String countryName= "";
String value= "";
String x= null;
for (CSVRecord record:parser){
String countries= record.get("Country");
if (countries.contains(country)){
countryName=record.get(country);
value=record.get("Value");
exports= record.get("Exports");
x= countryName+":"+exports+":"+value;
}
else{
x= "information not found";
}
}
return x;
}