【问题标题】:Java parsing csv and creating objectsJava解析csv并创建对象
【发布时间】:2014-12-25 20:49:16
【问题描述】:

我得到一个“不能从静态上下文引用的非静态方法”——我相信这基本上意味着对象没有被创建。我做错了什么?

public void loadData() {
    String csvFile = "/data/patientList.csv";
    BufferedReader br = null;

    try {

        br = new BufferedReader(new FileReader(csvFile));
        br.readLine();
        String line1 = null;
        while ((line1 = br.readLine()) != null) {
            String[] patient = line1.split(",");
            int bedNum = Integer.parseInt(patient[0]);
            Patient patient1 = new Patient(bedNum, patient[1], patient[2], patient[3], patient[4],
                    RESPIRATORY_RATE, HEART_RATE, SYSTOLIC, SPO2);

在此处抛出错误,例如:

patientNameField.setText(Patient.getFistName());

【问题讨论】:

  • 哪一行有错误?有问题的错误意味着您正在从静态函数中调用成员函数(没有“this”可用)。但是我无法从您发布的代码中看出问题所在。信息不足。
  • 无论我在哪里尝试使用 Patient 类对象,都会收到错误消息。哪些信息会有所帮助?

标签: java csv bufferedreader


【解决方案1】:

这个错误听起来像你在尝试这个:

public static void main(String args[]) {
    loadData();
}

public void loadData() { /* method code */ }

这不起作用,因为方法loadData 不是静态的,需要调用一个对象。

如下修改你的代码:

public class MyClass { // you can name your class like you want
    public static void main(String args[]) {
        final MyClass instance = new MyClass(); //assuming there is a non-argument constructor
        instance.loadData(); // call "loadData" on a specifc instance of MyClass
    }

    public void loadData() { /* method code */ }
}

【讨论】:

  • 感谢您的反馈...我玩了一下,现在我有了这个 PatientJFrame 实例 = null;尝试 { 实例 = 新 PatientJFrame(); } catch (IOException ex) { Logger.getLogger(PatientJFrame.class.getName()).log(Level.SEVERE, null, ex); } instance.loadData();不过,当我尝试使用 Patient 对象时,我仍然会收到错误消息。
  • @ClaaziX 您收到完全相同的错误消息?还是换一个?
  • @ClaaziX 那么请更新您问题中的源代码。必要的信息是:发生错误的行,该行所在的方法以及调用的方法。如果没有错误,则不需要loadData() 的整个实现。
  • Patient.getFistName() ...您刚刚学到了什么:D?出于与我的回答中提到的相同原因,这也不起作用。使用您尝试获取其名称的 Patient 实例。也许patient1?作为说明为什么这是必要的:考虑 5 个不同的患者有自己的实例。每个实例都包含它所代表的患者的姓名。 Java 应该如何通过调用Patient.getFistName() 知道您想获得哪个名称?这就是为什么你必须在对象/实例上调用非静态方法来“告诉”Java 应该在哪个对象上执行该方法。
  • 谢谢汤姆! :) 我认为可能是这种情况,我出于这个问题的目的对其进行了简化 - 我实际上是在尝试做一个 for 循环,遍历所有名称以匹配特定名称,然后显示所有实例那个特殊的物体....但是该睡觉了!
猜你喜欢
  • 1970-01-01
  • 2013-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多