Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.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 日食';标记“0”上的语法错误&引用;,此标记';后应为表达式;,我的语法哪里错了?_Java_Eclipse_Object_Syntax Error - Fatal编程技术网

Java 日食';标记“0”上的语法错误&引用;,此标记';后应为表达式;,我的语法哪里错了?

Java 日食';标记“0”上的语法错误&引用;,此标记';后应为表达式;,我的语法哪里错了?,java,eclipse,object,syntax-error,Java,Eclipse,Object,Syntax Error,m_one中存在语法错误。它说: 标记“,”上的语法错误,此标记后应为表达式 我不明白这是从哪里来的。这是我的构造函数: package MainFunction; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Gun m_one = new Gun("M1", 30, ["Bleeding"], "semi-auto", ".1

m_one中存在语法错误。它说: 标记“,”上的语法错误,此标记后应为表达式

我不明白这是从哪里来的。这是我的构造函数:

package MainFunction;


public class Main {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    Gun m_one = new Gun("M1", 30, ["Bleeding"], "semi-auto", ".15 cal", "lead", 8);
    System.out.println("Java Works.");
}

}
effects[effects.length] = effect;

构造函数没有返回错误,但是当我使用它时,它会返回错误。问题出在哪里?

m_one
的声明中,围绕“出血”的部分需要使用大括号而不是方括号。

您正在尝试使用以下表达式创建和传递字符串数组:

package MainFunction;




 public class Weapon {
    Weapon(String name, int damage, String[] effects){
        this.name = name;
        this.damage = damage;
        this.effects = effects;
    }
    private int damage;
    public String name;
    private String[] effects;
    public void addEffect(String effect){
        effects[effects.length] = effect;
    }
}
    class Gun extends Weapon {
    private String type;
    public String name;
    private int damage;
    public String[] effects;
    private String ammoType;
    private String bulletMaterial;
    private int barrelLength;
    private String fireType;
    Gun( String name, int damage, String[] effects, String fireType, String ammoType, String bulletMaterial, int barrelLength) {
        super(name, damage, effects);
        // TODO Auto-generated constructor stub
        this.name = name;
        this.damage = damage;
        this.effects = effects;
        this.fireType = fireType;
        this.ammoType = ammoType;
        this.type = "ranged";
        this.bulletMaterial = bulletMaterial;
        this.barrelLength = barrelLength;
    }

}



class Sword extends Weapon {
    private String type;
    public String name;
    private int damage;
    public String[] effects;
    private int bladeLength;
    private int hiltLength;
    private String bladeMaterial;
    Sword(String name, int damage, String[] effects, int barrelLength, int hiltLength, String bladeMaterial){
        super(name, damage, effects);
        this.name = name;
        this.damage = damage;
        this.effects = effects;
        this.type = "melee";    
        this.bladeLength = bladeLength;
        this.hiltLength = hiltLength;
        this.bladeMaterial = bladeMaterial;
    }
}
但是,这不是用于创建数组的Java语法。必须显式创建数组,指定类型,并使用大括号
{}
来包含内容

["Bleeding"]
如果您愿意,您可以有多个元素:

new String[] {"Bleeding"}
另外,稍后在
武器
addEffect
方法中,您尝试通过指定超出数组长度的元素来确定数组的长度

new String[] {"Bleeding", "Damaging"};
在Java中,数组一旦创建就有固定的大小,因此这将抛出
ArrayIndexOutOfBoundsException
。如果需要可变长度数组,请将
字符串[]
替换为
列表
。首先,在构造函数中:

package MainFunction;


public class Main {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    Gun m_one = new Gun("M1", 30, ["Bleeding"], "semi-auto", ".15 cal", "lead", 8);
    System.out.println("Java Works.");
}

}
effects[effects.length] = effect;
然后在定义
addEffect
时:

List<String> effects;
您不需要在
main
中创建数组,而需要创建
List
的实现并将其传入

effects.add(effect);
List effects=new ArrayList();
添加(“出血”);
影响。添加(“损害”);
枪m_one=新枪(“M1”,30,效果,“半自动”,“0.15 cal”,“铅”,8);

您能添加准确的错误消息吗?谢谢,我会尝试一下。我是Java新手。