gpt4 book ai didi

java - 不能从静态上下文中引用非静态方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:56:34 25 4
gpt4 key购买 nike

我想一劳永逸地理解这一点。

请原谅下面粘贴的大量代码,但我不想遗漏任何细节。

我唯一改变的是加载的 URL。但这不会导致错误。

我想调用我的函数“readPosiitons”。简单的解决方案,使其静态。真正的解决方案,我不确定。

请帮助我更好地理解如何以正确的方式解决此错误。

谢谢!!

            /*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package PandL;

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;
import java.util.Scanner;
import toolBox.Secretary;
import toolBox.Secretary.positionObj;

/**
*
* @author Jason
*
*/
public class GarageComm {
public static void main(String[] args) throws MalformedURLException, IOException{
String retStr;
String startM;
String endM;
String myURL;
String[] Split1=null;
Integer lnCount;
HashMap hashPos=new HashMap();
hashPos= readPositions("holdingsBU.txt");//the error is here

myURL="http://myUrl?s=";

URL url = new URL(myURL);
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));



in.close();
}

public HashMap readPositions(String destFile){

HashMap<String, Secretary.positionObj> hashPositions=new HashMap<String,positionObj>();
Secretary mySecretary=new Secretary();
try{
File F=new File(destFile);
if(F.exists()){
System.out.println("File Exists: "+F.exists());
System.out.println(destFile);
Scanner sC= new Scanner(F);

while (sC.hasNext()){
String[] Splitter1;
Secretary.positionObj position=mySecretary.new positionObj();


Splitter1=sC.nextLine().split(",");
position.positionDate=Double.parseDouble(Splitter1[0]);
position.positionTicker=(Splitter1[1]);
position.positionOpen=Double.parseDouble(Splitter1[2]);
position.positionPrice=Double.parseDouble(Splitter1[3]);
position.positionSMA=Double.parseDouble(Splitter1[4]);
position.positionUpdated=Double.parseDouble(Splitter1[5]);
position.priceUpdated=Double.parseDouble(Splitter1[6]);
position.updateDate=Double.parseDouble(Splitter1[7]);


hashPositions.put(position.positionTicker.trim(), position);

}


}else{
System.out.println("File Created: "+ F.createNewFile());
System.out.println("----No previous positions----");
}

}catch (Exception E){
System.err.println(destFile + " does not exist.");
hashPositions.put("ERROR", null);
E.printStackTrace();
}
return hashPositions;
}
}

最佳答案

真正的解决方案?不要在 main() 方法中放太多东西。这是给菜鸟的。

Java 是一种面向对象的语言。将逻辑放在与 GarageComm 类关联的方法中。 main() 应该只是实例化一个实例并调用它的方法。

改成这样:

            GarageComm gc = new GarageComm();
hashPos= gc.readPositions("holdingsBU.txt");//the error is here

关于java - 不能从静态上下文中引用非静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5972764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com