-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

我看到两个错误:

1. Near addExp,方法外有while循环,是语法错误。无论如何,这个循环的目的是什么?这是一个无限循环,它的主体中没有任何breaks 或returns - 它实际上应该永远持续下去吗?

2.

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

你忘了在i这里初始化。虽然,这个循环没有意义,但您的条件询问是否i大于其他值,但您在每次迭代 ( i++) 时递增它。你想在这里做什么?

于 2013-01-07T03:19:40.850 回答
0

1) For 循环有一个错误,因为您在int i没有指定它的初始值的情况下启动了它。

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 回答
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);

如果你想做的是给玩家增加 10000 XP

于 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在 main 方法中进行初始化。同样重要的是要注意i >= 10000总是返回 false。您的 for 循环可能应该修改为:

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

您需要将 while 循环放在方法 addExp 中,并在您的一个 for 循环中将 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 回答