我是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。)
答案 0 :(得分:1)
我看到两个错误:
1。
在addExp
附近,方法外部有一个while
循环,这是一个语法错误。无论如何,这个循环的目的是什么?这是一个无限循环,其身体中没有任何break
或return
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;
}
}
}