猿问

带字典和空指针的范围

HashMap我在 FX 程序的启动方法中暂时显示信息时遇到问题。


public class stack extends Application{


    String mCurrentLocation; // Store current location


    // Map to store name as keys and easting and northing as values

    HashMap<String, List <Double>> dict = new HashMap<>();


    public static void main(String[] args) {

        stack mainObject = new stack();


        mainObject.run();// Method where the program is built


        launch(args);

    }

    public void start(Stage primaryStage) throws Exception{

        System.out.println("In in startFX: "); // debugging only

        System.out.println(dict);           // debugging only

        // More fx code

    }

    private void run(){


        System.out.println("In main");

        System.out.println(dict);


        //Read Northing and Easting input received from a txt file

        try{

            Scanner scanner = new Scanner(new 

            File("NorthingAndEastings.txt"));


            while(scanner.hasNext()){

                List<Double> coordinates = new ArrayList<>();

                String name = scanner.next(); // key

                Double easting = scanner.nextDouble();

                coordinates.add(easting); // list(0)

                Double northing = scanner.nextDouble();

                coordinates.add(northing); //list(1)

                this.dict.put(name, coordinates); 

            }

        scanner.close();

        } catch(FileNotFoundException e){

            System.out.println("Sorry, could not open" 

            + "'NorthingAndEastings.txt' for reading. Stopping");

            System.exit(-1);

        }


        // For debugging only

        for (Map.Entry me : dict.entrySet()){

            System.out.println("Name: "+me.getKey() + " Loc: " + 

                         me.getValue());

        }

    }

}

在run()首先在 main 中调用的方法中,HashMap成员变量是从文本文件中填充的。但是当代码转到我想显示HashMap项目的 FX 时,字典是空的。我得到{};


慕斯709654
浏览 106回答 2
2回答

杨__羊羊

launch类中的方法Application将启动堆栈类的一个新实例,该实例将有一个空的dict.&nbsp;如果您希望启动的应用程序保留填充的值而dict不是创建dict或static map填充您的dictin start 方法。希望这可以帮助。

繁星淼淼

我不确定,但我认为问题可能是由stack mainObject = new stack();- 您可能正在dict为您认为在start.
随时随地看视频慕课网APP

相关分类

Java
我要回答