2013-01-07 43 views
-2

我是新來的Java,我試圖做一個lling系統。她到目前爲止我的代碼:Java惱人的語法錯誤

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

你的問題開始於第29行,你關閉該函數,然後開始一個無限循環。 – Mark

+1

歡迎來到StackOverflow!爲了幫助我們回答您的問題,請提供您迄今爲止所嘗試的內容以及您遇到問題的代碼中的特定部分。 –

+0

查看我在代碼後所說的內容。 –

回答

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級別,增加等級)

A. R. S指出了你的for循環的另一個嚴重問題。

而不是

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

你想

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

或只是

Player01.addExp(10000); 

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

+0

我想我是。 :o我沒有想到這一點。 * FacePalm *我腳本太多了。 xD –

1

兩個錯誤,我看到:

1. 近addExp,存在的方法中,這是一個語法錯誤之外的while迴路。無論如何,這個循環的目的是什麼?這是一個沒有任何break s或return s的無限循環 - 它實際上是否應該永遠持續下去?

2.

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

你忘了在這裏初始化i。儘管此循環沒有任何意義,但您的條件會詢問i是否爲大於而不是其他值,並且您在每次迭代時都會增加它(i++)。你想在這裏做什麼?

+0

我剛剛在你看到這個之前解決了這兩個問題。 xD –

0

你的while循環不在方法中。這是修改後的addExp方法。

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

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

你也沒有在你的主要方法中初始化i。同樣重要的是要注意i >= 10000將始終返回false。您的循環也許應該修改爲:

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

你需要把while循環的方法addExp內並初始化我到0在你一個for循環

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(); 
} 
+0

while循環+非執行 –

+0

他的問題是如何擺脫語法錯誤和我的代碼做到了這一點。爲什麼這會被投票? @KarthikT –

+0

哈哈,他是個瘋子。 –

0

1)循環有錯誤,因爲您啓動了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; 
      } 
     } 
} 
+0

由於無需downvote投票 –