【问题标题】:Java using code from method doesn't workJava 使用方法中的代码不起作用
【发布时间】:2015-07-19 17:43:13
【问题描述】:

我正在尝试使用特定代码,但由于某种原因无法正常工作。我必须在同一个类中的方法:

public void InputEnter()
    {       
        if(Input.GetKey(getCoords)) {
            Move(GetTransform().GetPos());
        System.out.println((GetTransform().GetPos()));
        }
}

一旦我按下回车,这个方法就会给我一些 Vector3f 的坐标。其他代码写入文件。

public void ProcessText()
     {
        System.out.println("ProcessText Operational");

        String file_name = "C:/Users/Server/Desktop/textText.txt";

        try
        {           
            ProcessCoords file = new ProcessCoords(file_name);
            String[] aryLines = file.OpenFile();

            int i;
            for (i = 0; i < aryLines.length; i++)
            {
                System.out.println(aryLines[i]);    

                 if(aryLines[i].startsWith("makeGrass:")) {
                        String Arguments = aryLines[i].substring(aryLines[i].indexOf(":")+1, aryLines[i].length());
                        String[] ArgArray = Arguments.split(",");

                        this.makeGrass(Double.parseDouble(ArgArray[0]), 
                                   Double.parseDouble(ArgArray[1]), 
                                   Double.parseDouble(ArgArray[2]));                    
                }
            }

            ProcessCoords data = new ProcessCoords(file_name);      
            data.writeToFile("makeGrass:");

            System.out.println("Coordinates Saved!");

        } catch(IOException e) {            
            System.out.println(e.getMessage());
        }
     }

我想做的是在 ProcessText 方法中使用 InputEnter 方法,所以我只是删除了 InputEnter 并在 ProcessText 方法中使用了 Input 代码:

public void ProcessText()
     {
        System.out.println("ProcessText Operational");

        String file_name = "C:/Users/Server/Desktop/textText.txt";

        try
        {           
            ProcessCoords file = new ProcessCoords(file_name);
            String[] aryLines = file.OpenFile();

            int i;
            for (i = 0; i < aryLines.length; i++)
            {
                System.out.println(aryLines[i]);    

                 if(aryLines[i].startsWith("makeGrass:")) {
                        String Arguments = aryLines[i].substring(aryLines[i].indexOf(":")+1, aryLines[i].length());
                        String[] ArgArray = Arguments.split(",");

                        this.makeGrass(Double.parseDouble(ArgArray[0]), 
                                   Double.parseDouble(ArgArray[1]), 
                                   Double.parseDouble(ArgArray[2]));                    
                }
            }

            if(Input.GetKey(getCoords)) {
                Move(GetTransform().GetPos());
            ProcessCoords data = new ProcessCoords(file_name);                  
            data.writeToFile("makeGrass:");

            System.out.println("pressing enter doesn't work!!");

            System.out.println((GetTransform().GetPos()));
            }

            System.out.println("Input.GetKey doesn't work anymore, but why and how to fix it??");
        } catch(IOException e) {            
            System.out.println(e.getMessage());
        }
     }

但是现在,按回车键不再像以前那样给我坐标,我真的不明白为什么,我需要一些帮助。

非常感谢!

【问题讨论】:

    标签: java methods


    【解决方案1】:

    好吧,我花了一段时间,但我想通了,其实很简单:

    正如您在 ProcessText() 中看到的,我已经包含了从文件读取的代码和写入文件的代码。

    ProcessCoords data = new ProcessCoords(file_name);      
    data.writeToFile("makeGrass:");
    
    System.out.println("Coordinates Saved!");
    

    然后我的想法是将 Input 方法放入 ProcessText 方法中,如下所示:

    if(Input.GetKey(getCoords)) {
    Move(GetTransform().GetPos());
    ProcessCoords data = new ProcessCoords(file_name);                  
    data.writeToFile("makeGrass:");
    System.out.println("pressing enter doesn't work!!");
    System.out.println((GetTransform().GetPos()));
    

    这几乎是正确的,但很好.. 为了让游戏对象的输入工作,我需要将 Input 类添加为组件:

    gameObject.addComponent(new InputClass());

    我所要做的就是将它从我的 ProcessText 方法中取出并将其移动到我的 Input 类中,因此它看起来像这样:

    public void Input(float delta)
    {           
    String file_name = "C:/Users/Server/Desktop/textText.txt";
    
    try
    {           
        ProcessCoords data = new ProcessCoords(file_name);
    
        if(Input.GetKey(getCoords)) {   
        data.writeToFile("makeGrass:" + (GetTransform().GetPos()));
    
        System.out.println("Coordinates Saved!");   
        System.out.println((GetTransform().GetPos()));
        }   
    
        } catch(IOException e) {
            System.out.println(e.getMessage());
        }
    }
    

    之后,我能够实际使用各个游戏对象的输入,并且显然只有在我按下回车时才能将适当的坐标写入文本文件。

    结果如下:http://www.pic-upload.de/view-27748157/AnotherExample.png.html

    希望我的回答以后能帮到别人!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-08
      • 1970-01-01
      • 1970-01-01
      • 2016-01-23
      相关资源
      最近更新 更多