Eclipse 'トークン "、"の構文エラー、このトークンの後に式が必要です'、構文はどこで間違っていますか?

C12
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.");
}

}

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;
    }
}

コンストラクターはエラーを返しませんが、使用するとエラーが返されます。何が問題ですか?

rgettman

次の式を使用して、文字列の配列を作成して渡すことを試みています。

["Bleeding"]

ただし、これは配列を作成するためのJava構文ではありません。配列を明示的に作成し、タイプを指定し{}、コンテンツを含めるために中括弧付ける必要があります。

new String[] {"Bleeding"}

必要に応じて、複数の要素を含めることができます。

new String[] {"Bleeding", "Damaging"};

また、WeaponaddEffectメソッドの後半で、配列の長さを超える要素を割り当てることにより、配列の長さを試みます。

effects[effects.length] = effect;

Javaでは、配列は一度作成されると固定サイズになるため、これによりArrayIndexOutOfBoundsExceptionがスローされますあなたは可変長配列が必要な場合は、交換してくださいString[]List<String>まず、コンストラクターで:

Weapon(String name, int damage, List<String> effects){

次に、宣言するときeffects

List<String> effects;

次に、定義するときaddEffect

effects.add(effect);

で配列を作成する代わりにmain、の実装を作成してList渡す必要があります

List<String> effects = new ArrayList<>();
effects.add("Bleeding");
effects.add("Damaging");
Gun m_one = new Gun("M1", 30, effects, "semi-auto", ".15 cal", "lead", 8);

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ