2014-05-07 67 views
0

我目前有兩個類Main和Command。 他們都包內emerica.simple 因此類路徑是emerica.simple.Main和emerica.simple.Command我該如何製作布爾,可以從一個類訪問另一個

在主我定義了一個叫布爾spyblock

public class Main extends JavaPlugin{ public static boolean spyblock = true;

在命令我試圖訪問並更改它

public class Command implements CommandExecutor { 
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { 
    if (cmd.getName().equalsIgnoreCase("spyblocks")) { 
     return true; 
     if (Main.spyblock == true) { 

      Main.spyblock = false; 
     } 
     else { 
      Main.spyblock = true; 
     } 
    } 
    else 
    { 
     return false; 
    } 
} 

鋤頭我可以更改此代碼,因此它的工作?我試圖切換main.spyblock此命令「Spyblocks」

+0

哪裏出錯?什麼是輸出? – MeIr

回答

0

您的改變spyblock代碼是不可達的,因爲

if (cmd.getName().equalsIgnoreCase("spyblocks")) { 
     **return true;** 
     if (Main.spyblock == true) { 

      Main.spyblock = false; 
     } 
     else { 
      Main.spyblock = true; 
     } 
    } 

突出顯示的行。只要將這個喜歡

if (cmd.getName().equalsIgnoreCase("spyblocks")) { 

     if (Main.spyblock == true) { 

      Main.spyblock = false; 
     } 
     else { 
      Main.spyblock = true; 
     } 
     **return true;** 
    } 

希望這有助於

+0

它非常感謝你 – user3612275

+0

如果它幫助你,那麼請接受它作爲答案。謝謝。 – Sanjeev

0

你有unreachable code

if (cmd.getName().equalsIgnoreCase("spyblocks")) { 
    return true; 
    //unreachable code 
    if (Main.spyblock == true) { 

     Main.spyblock = false; 
    } 
    else { 
     Main.spyblock = true; 
    } 
} 

這就是爲什麼Main.spyblock值不會改變。

你回到你的方法只是你的第二ifreturn true;以上,這就是爲什麼你if不執行,你必須把你的return true;第二if-else條件之後。

+0

如何使其可達? – user3612275

0

如果你只是想切換它像這樣做:

if (cmd.getName().equalsIgnoreCase("spyblocks")) { 
    Main.spyblock = !Main.spyblock; 
} 
0

我不完全understsand你正在嘗試做的,但是目前你的代碼不能正確編譯。

嘗試將其更改爲以下

public class Command implements CommandExecutor { 
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { 
    if (cmd.getName().equalsIgnoreCase("spyblocks")) { 
     if (Main.spyblock == true) { 
      Main.spyblock = false; 
     } 
     else { 
      Main.spyblock = true; 
     } 
     return true; 
    } 
    return false; 
} 

你也可以改變你的邏輯,使它有點簡單,因爲你沒有檢查這兩個條件,因爲你總是翻轉它。因此,只需將其設置爲與當前的相反。

Main.spyblock = !Main.spyblock; 
相關問題