2016-08-02 41 views
1

我想知道,如果可能,我已設置兩個字符串相結合 -合併兩個字符串在一個ArrayList

我所試圖做的是,當玩家輸入命令「/規則添加規則放在這裏」 它將添加文本「原則才能在這裏」到配置文件列表,配置文件看起來像這樣:

規則:

  • 規則1

  • 第2

,我嘗試使用該命令的代碼如下陳述:

if (args[0].equalsIgnoreCase("add")) 
     { 
     ArrayList<String[]> list1 = new ArrayList<String[]>(); 
     List<String[]> c = plugin.getConfig().getList("rules"); 

     c.list1.addAll(Arrays.asList(args)); 

     return true; 
     } 

「插件」是主類的插件,所以一切都被啓動使用。這就是配置生成的地方。

我已經嘗試使用此代碼,我已經在bukkit論壇發現 - plugin.getConfig().getList("rules").add(args); ,但沒有運氣,因爲我得到了錯誤提示:

在類型List<capture#4-of ?>方法add(capture#4-of ?)不適用參數(String[]

現在可能是一個愚蠢的問題要問,最LIKEY是,但我還是當然的初學者。 如果你可以請幫助我,這是非常感謝。 謝謝!

+1

什麼是'plugin'?你能澄清「玩家輸入什麼規則」 –

+2

@ cricket_007看起來就像我的Minecraft Bukkit插件的插件對象。 – bcsb1001

+1

您添加的代碼沒有多大意義。您已將'c'聲明爲'List ',但下一行是'c.list1.add'。你想在這裏做什麼? – sprinter

回答

0

這實際上是一個有趣的任務,雖然這是什麼你應該做的如Java的首發

至於你的問題(不爪哇至少應基本行不通寫的Minecraft插件),下面將要做到這一點,可能會出現錯誤,因爲我沒有可以測試的Minecraft服務器。

掌握由用戶編寫的聊天規則的ArrayList<String>很簡單:

ArrayList<String> a = new ArrayList<>(); 
    for(String s : args){ 
     a.add(s); 
    } 

我們這些規則添加到您的配置,bukkit確實提供了一個函數來設置值,set(String, Object)要精確。文檔可以在here找到。

所以,你可以這樣做:

plugin.getConfig().set("Rules", a); 

如果結果是你想要什麼偉大的,如果不是,請對什麼是錯功能精確。

另外請記住,如果沒有其他插件或插件使用"Rules"作爲訪問它們的關鍵(至少我知道),那麼添加這些規則將不會有太大的作用。

編輯:以上

是可能的,但下面可能工作以及:

if(plugin.getConfig().getList("rules")){ 
    plugin.getConfig().getList("rules").add(Arrays.asList(args)); 
} 

不要忘了,這樣可以有重複!一個列表和(據我所知)所有它的實現不檢查重複的條目!

2

您需要List<?>具有實際類型,但不能改變具有通配符類型的對象。

+1

不僅如此,但似乎OP認爲'list1'在某種程度上是'c'的一員。 –

0

也許這是你在找什麼:

c.list1.addAll(Arrays.asList(args)); 

但是你需要更精確地想要做列出用什麼來形容。

+0

不幸的是,這並沒有解決它,我編輯了這篇文章,以解釋我正在嘗試做什麼。 – OSKali