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;
}
}
コンストラクターはエラーを返しませんが、使用するとエラーが返されます。何が問題ですか?
次の式を使用して、文字列の配列を作成して渡すことを試みています。
["Bleeding"]
ただし、これは配列を作成するためのJava構文ではありません。配列を明示的に作成し、タイプを指定し{}
、コンテンツを含めるために中括弧を付ける必要があります。
new String[] {"Bleeding"}
必要に応じて、複数の要素を含めることができます。
new String[] {"Bleeding", "Damaging"};
また、Weapon
のaddEffect
メソッドの後半で、配列の長さを超える要素を割り当てることにより、配列の長さを試みます。
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]
コメントを追加