Java烦人的语法错误

时间:2013-01-07 03:15:30

标签: java syntax-error

我是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。)

5 个答案:

答案 0 :(得分:1)

我看到两个错误:

1。 在addExp附近,方法外部有一个while循环,这是一个语法错误。无论如何,这个循环的目的是什么?这是一个无限循环,其身体中没有任何breakreturn s - 它实际上应该永远存在吗?

2

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

您忘记在此处初始化i。虽然,这个循环没有意义,但是你的条件询问i 更大是否比其他东西更高然后你在每次迭代时递增它(i++)。你想在这做什么?

答案 1 :(得分: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级别,则递增级别)

一个。 R. S指出了你的for循环的另一个严重问题。

而不是

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

你想要

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

或只是

 Player01.addExp(10000);

如果您想要做的是将10000 XP 添加到播放器

答案 2 :(得分: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);
}

答案 3 :(得分: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();
}

答案 4 :(得分: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; 
            }
        }
}