当csv值不存在时,如何使if语句正常工作?

时间:2018-08-19 14:26:27

标签: java csv parsing error-handling

我当前遇到的问题是我的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");
}

2 个答案:

答案 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;
    }