2

私はJavaをまったく初めて使用するので、私の質問がばかげていたら申し訳ありません。私はこの課題に取り組んでおり、メインメソッドについて何時間も読んでいますが、それを理解することはできません. コードの一部を以下に示します。私はここから離れているかもしれませんが、達成したいのはコンストラクターを開始するメインメソッドを取得することですが、コンパイルすると「シンボルが見つかりません-コンストラクタープレーヤー」というエラーが表示されます。今、これはコンストラクターの文字列パラメーターと関係があると推測していますが、私はすべてです。誰かがこれ、おそらく非常に単純な問題に光を当てることができれば、私はとても幸せです:)

public class Player {
private String nick;
private String type;
private int health;


public static void main(String[] args)
{
    Player player = new Player();
    player.print();
}


public Player(String nickName, String playerType) 
{

    nick = nickName;
    type = playerType;
    health = 100;
    System.out.println("Welcome " + nick +" the " + type + ". I hope you are ready for an adventure!");
}

   public void print()
{
    System.out.println("Name: " + nick);
    System.out.println("Class: " + type);
    System.out.println("Remanining Health: " + health);
}
4

5 に答える 5

3

Player引数のないコンストラクターがないため、次を使用できます。

Player player = new Player("My Nickname", "Player Type");

ユーザーにPlayer引数を要求する場合は、次のように読むことができます。

Scanner scanner = new Scanner(System.in);
System.out.print("Enter Player Name:");
String nickName = scanner.nextLine();
System.out.print("Enter Player Type:");
String playerType = scanner.nextLine();
Player player = new Player(nickName, playerType);
于 2013-01-31T21:39:16.747 に答える
1

明らかに0-arg constructor、持っていないときに を使用しています: -

Player player = new Player();

クラスでパラメーター化されたコンストラクターを提供する場合、コンパイラーはデフォルトのコンストラクターを追加しないことに注意してください。使用している場合は、1 つの 0-arg コンストラクターを手動で追加する必要があります。

したがって、次のいずれかを追加できます0-arg constructor

public Player() {
    this.nick = "";
    this.type = "";
    this.health = -1;
}

または、パラメーター化されたコンストラクターを使用してオブジェクトを作成します。

于 2013-01-31T21:39:00.080 に答える
0

デフォルトのコンストラクターは、コンストラクターが欠落している場合にjavaによって作成されます。このコンストラクターは、単にスーパークラスを呼び出します。明示的なコンストラクターを定義した場合、Javaはコンストラクターを作成しません。したがって、クラスで1つのデフォルトコンストラクタを定義できます。

public Player() 
{   nick = "abc";
    type = "type";
    health = 100;
    System.out.println("Welcome " + nick +" the " + type + ". I hope you are ready for an adventure!");
}

または、定義されたコンストラクターuを呼び出すようにコードを変更します。

 Player player = new Player("nick","type");
于 2013-01-31T21:51:35.210 に答える
0

メソッドでやろうとしたことはmain()、新しい Player オブジェクトを作成することでした。しかし、問題は、実装したコンストラクターを使用する必要があり ( Player(String, String))、パラメーターなしでコンストラクターを使用した ( Player()) ことです。

空の文字列を使用する必要があります (たとえば、プレーヤーのダミーを取得する場合)。

Player player = new Player("","");

または、新しいプレーヤー インスタンスに必要な名前とタイプを指定する必要があります。たとえば、

Player player = new Player("flashdrive2049","Player");

よろしく。

于 2013-01-31T22:00:37.600 に答える
0

クラスがコンストラクターを明示的に定義する場合、暗黙的な引数なしのコンストラクターは作成されません。

クラスに明示的なコンストラクターがあります

public Player(String nickName, String playerType) 
{

    nick = nickName;
    type = playerType;
    health = 100;
    System.out.println("Welcome " + nick +" the " + type + ". I hope you are ready for an adventure!");
}

そして、引数なしのコンストラクターを呼び出そうとしています

 Player player = new Player();

上記のコードでパラメーターを渡す必要がある (または) 引数なしのコンストラクターを作成する必要があります。

于 2013-01-31T21:38:44.217 に答える