-2

私はJavaを初めて使用し、lvlingシステムを作成しようとしています。これまでの私のコード:

    import java.util.*;
class Player
{
    private String Name;
    private int Level;
    private int EXP;
    int NextGoaltoLvl = 1000;

    public Player(String n, int lvl, int xp) 
    {
        Name = n;
        Level = lvl;
        EXP = xp;
    }
    public void printStats()
    {
        System.out.println("Name: " +Name);
        System.out.println("Level: " +Level);
        System.out.println("Exp: " + EXP);
    }
    public void addLevel(int addlvl)
    {
        Level += addlvl;
        System.out.println("Congratulations,"+ Name +",you have leveled up to " + Level + "!");
    }
    public void addExp(int num)
    {
        EXP += num; 
        if (EXP == NextGoaltoLvl)
        {
            addLevel(1); NextGoaltoLvl += 1000; EXP = 0; 
        }
    }
}
public class MainC 
{
    public static void main(String[] args) 
    {
        Player Player01 = new Player("kert109",1,0);
        for (int i = 0; i >= 10000; i++)
        {
            Player01.addExp(1);
        }
        Player01.printStats();
    }
}

Player01.printStats(); ここでまだエラーが発生しています。説明:構文エラー。「}」を挿入してClassBodyを完成させます。

何が悪いのかわかりません。ヘルプ?「{」と「}」をチェックしたことがあります。私もコードをきれいにしました。(Eclipseを使用します。)

4

5 に答える 5

1

私が見る2つのエラー:

1.の近くに、メソッドの外部にループがあります。これは構文エラーですaddExpwhileとにかくこのループの目的は何ですか?breakこれは、本体にsまたはsがない無限ループreturnです。実際には、永久に続くことになっていますか?

2.2。

for (int i; i >= 10000; i++)
{
    Player01.addExp(1);
}

ここで初期化するのを忘れましiた。このループは意味がありませんが、条件は他のものよりも大きいかどうかを尋ねますがi反復ごとにインクリメントします(i++)。ここで何をしようとしていますか?

于 2013-01-07T03:19:40.850 に答える
0

それ以外の

public void addExp(int num)
{
    EXP += num;
}
while (true)
{   
    if (EXP == NextGoaltoLvl)
    {
        addLevel(1); NextGoaltoLvl += 1000; EXP = 0; 
    }
}

無限ループすべての関数コードの外側コンパイルエラー+論理エラー

私はあなたが欲しいと思います

public void addExp(int num)
{
    EXP += num;

    if (EXP == NextGoaltoLvl)
    {
        addLevel(1); NextGoaltoLvl += 1000; EXP = 0; 
    }
}

(XPが新しいレベルXPに達した場合はレベルを上げます)

AR Sは、forループに関する別の重大な問題を指摘しています。

それ以外の

for (int i; i >= 10000; i++)
    {

あなたが欲しい

for (int i = 0; i <= 10000; i++)
    {

あるいは単に

 Player01.addExp(10000);

プレーヤーに10000XPを追加する場合

于 2013-01-07T03:18:51.840 に答える
0

whileループはメソッドに含まれていません。これが改訂されたaddExpメソッドです。

public void addExp(int num)
{
    EXP += num;

    if (EXP == NextGoaltoLvl)
    {
        addLevel(1); NextGoaltoLvl += 1000; EXP = 0;
    }
}

iまた、メインメソッドで初期化していない。i >= 10000常にfalseを返すことに注意することも重要です。forループはおそらく次のように修正する必要があります。

for (int i = 0; i < 10000; i++)
{
    Player01.addExp(1);
}
于 2013-01-07T03:20:17.077 に答える
0

メソッドaddExp内にwhileループを配置し、forループの1つでiを0に初期化する必要があります

 public void addExp(int num)
{
    EXP += num;
    while (true)
    {   
        if (EXP == NextGoaltoLvl)
        {
            addLevel(1); NextGoaltoLvl += 1000; EXP = 0; 
        }
    }
}

public static void main(String[] args) 
{
    Player Player01 = new Player("kert109",1,0);
    for (int i=0; i >= 10000; i++)
    {
        Player01.addExp(1);
    }
    Player01.printStats();
}
于 2013-01-07T03:20:18.540 に答える
0

int i1)初期値を指定せずに開始したため、forループにエラーがあります。

for( int i = yourInitialValue; i >=  10000; i++ )

2)

public void addExp(int num)
    {
        EXP += num;
    }
    while (true)
    {   
        if (EXP == NextGoaltoLvl)
        {
            addLevel(1); NextGoaltoLvl += 1000; EXP = 0; 
        }
    }

whileループはaddExpメソッドの外にあります。あなたがそれを望むかもしれない場所:

public void addExp(int num){

        EXP += num;

        while (true)
        {   
            if (EXP == NextGoaltoLvl)
            {
                addLevel(1); NextGoaltoLvl += 1000; EXP = 0; 
            }
        }
}
于 2013-01-07T03:22:05.747 に答える