【问题标题】:Getting nullpointer access error while using FileReader [duplicate]使用 FileReader 时出现空指针访问错误 [重复]
【发布时间】:2016-12-27 21:33:21
【问题描述】:

我正在尝试使用 FileReader 读取文件,但正在获取空指针访问权限。下面是代码。你能告诉我错误是什么吗?

public class C {
    private static final String file = "a.csv";

    public static void main(String[] args) {
        try (BufferedReader br2 = new BufferedReader(new FileReader(file))) {
            String line1;
            while ((line1 = br2.readLine()) != null);
            {
                System.out.println(line1);
                String[] rules = line1.split(",");
                String sevkey = rules[0];
                String sevval = rules[1];
                String[] val = sevval.split("\\|");
                String actsevval = val[1];
                HashMap<String, String> sevs = new HashMap<String, String>();
                for (int i = 0; i <= sevs.size(); i++) {
                    sevs.put(sevkey, actsevval);
                    if (actsevval != "none") {
                        System.out.println(actsevval);
                    }

                }
            }
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

【问题讨论】:

  • 请包含堆栈跟踪
  • 堆栈跟踪告诉你。请阅读。
  • while ((line1 = br2.readLine()) != null) ;这里删除分号
  • @DimaSan 是正确的,错误是那个分号。

标签: java


【解决方案1】:

这样的代码可以正常工作:

public class C {
    private static final String file="a.csv";

    public static void main(String[] args) {
        try (BufferedReader br2 = new BufferedReader(new FileReader(file))) {
            String line1;
            while ((line1 = br2.readLine()) != null) // Here was extra semicolon!
            {
                System.out.println(line1);
                String[] rules = line1.split(",");
                String sevkey = rules[0];
                String sevval = rules[1];
                String[] val = sevval.split("\\|");
                String actsevval= val[1];
                HashMap<String, String> sevs = new HashMap<String,String>(); 
                for (int i =0; i<=sevs.size();i++){
                    sevs.put(sevkey, actsevval);
                    if (actsevval!="none"){
                        System.out.println(actsevval);
                    }
                }
            }
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

【讨论】:

    猜你喜欢
    • 2020-10-17
    • 2018-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-09
    • 2014-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多