Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java I';我得到<;标识符>;预期误差_Java - Fatal编程技术网

Java I';我得到<;标识符>;预期误差

Java I';我得到<;标识符>;预期误差,java,Java,在一个类中,我有一个方法: public void initalizeElements() { //does some stuff } 因此,在另一节课上,我尝试: Molecules mol = new Molecules(); mol.initalizeElements(); 我在第二行得到一个错误,说“预期” 我觉得这真的很容易,我只是浏览了一些简单的东西,但我还是不明白。在别人说之前,是的,我看了数百个其他问题,这些问题和我的问题一样。但他们似乎都没有帮助我 完整代码: packa

在一个类中,我有一个方法:

public void initalizeElements()
{
//does some stuff
}
因此,在另一节课上,我尝试:

Molecules mol = new Molecules();

mol.initalizeElements();
我在第二行得到一个错误,说“预期”

我觉得这真的很容易,我只是浏览了一些简单的东西,但我还是不明白。在别人说之前,是的,我看了数百个其他问题,这些问题和我的问题一样。但他们似乎都没有帮助我

完整代码:

package mymolecules;
public class Molecules 
{
        public String[] elements = new String[35];
        private int lazyCounter = 0;

        public void initalizeElements()
        {
        elements[lazyCounter] = "H";
        lazyCounter += 1;
        elements[lazyCounter] = "He";
        lazyCounter += 1;
        elements[lazyCounter] = "Li";
        lazyCounter += 1;
        elements[lazyCounter] = "Be";
        lazyCounter += 1;
        elements[lazyCounter] = "B";
        lazyCounter += 1;
        elements[lazyCounter] = "C";
        lazyCounter += 1;
        elements[lazyCounter] = "N";
        lazyCounter += 1;
        elements[lazyCounter] = "O";
        lazyCounter += 1;
        elements[lazyCounter] = "F";
        lazyCounter += 1;
        elements[lazyCounter] = "Ne";
        lazyCounter += 1;
        elements[lazyCounter] = "Na";
        lazyCounter += 1;
        elements[lazyCounter] = "Mg";
        lazyCounter += 1;
        elements[lazyCounter] = "Al";
        lazyCounter += 1;
        elements[lazyCounter] = "Si";
        lazyCounter += 1;
        elements[lazyCounter] = "P";
        ....
        ....
        //on so on for the hole periodic table
        }
}


在Parser类中,有两行代码

Molecules mol = new Molecules();
mol.initalizeElements();
在方法外部,这通常必须发生在某个构造函数中,将其移动到方法内部

像这样初始化对象是不好的做法

尝试更优雅的方式,如:

public class Parser {
    private String conString = "";
    private int conInt = 0;
    private int indexer = 0;

    private int lazyCounter = 0;

    private String sortList = "";
    private int sortCount = 0;
    private Molecules mol;
    private String formula;

    public Parser(String Formula){
        this.formula = Formula;
        mol = new Molecules();
        mol.initalizeElements();
    }

无法在用于定义变量的类的节中开始调用方法。将这些移动到构造函数:

mol = new Molecules();
mol.initalizeElements();
在定义变量部分仅保留mol的声明,其位置如下:

private Molecules mol;

在此级别上,只允许使用字段/方法/构造函数/类声明/初始值设定项块

Molecules mol = new Molecules();
{
    mol.initalizeElements();
}
上面是一个初始化程序块。它的用途主要是填充地图。更常见的是将方法调用放在构造函数中

public Parser(String Formula) {
    mol.initalizeElements();
}

这个片段看起来不错。你能分享更多的内容吗?是
mol.initializeelements()在方法中?@Mureinik sure 1sec@Mureink上传完整code@Reimeus上传了完整的代码供您查看
public Parser(String Formula) {
    mol.initalizeElements();
}