2013-08-26 57 views
0

我有一段代碼,其中有一個數組以args[]的形式傳遞給它。 args將包含數據,如["Hello", "guys"][Ljava.lang.String; @輸出錯誤

我需要使用sendMessage方法來顯示在遊戲中的聊天以及我嘗試從數組中創建常規字符串的位置,而在聊天中發送的是'[Ljava.lang.String; @'消息,而不是。

String Msg = new String (args.toString()); 

OnlinePlayers.sendMessage(ChatColor.GREEN + Player.getName() + ": " + Msg); 

你知道,這樣該數組中的文本被放入一個字符串,並打印成詞,而不是沒有人理解一個奇怪的格式,我如何改變這種代碼?

======

新版本

String NewMsg = null; 

String Msg = java.util.Arrays.toString(args); 

for(int i = 0; i <= Msg.length() - 1; i++) { 

    NewMsg = (args[i] + " "); 

} 

OnlinePlayers.sendMessage(ChatColor.GREEN + Player.getName() + ": " + NewMsg); 

我現在剛剛起步錯誤,它是不工作的。我認爲這會從'Msg.length()'中得到單獨的單詞量,然後遍歷for循環,並在每個循環的'NewMsg'字符串中添加一個單詞加空格。

+0

* 「......我認爲是傳遞給它在args形式的ArrayList [] ...」 *'ArrayList'!=陣列。 –

回答

5

我有一段代碼,有我認爲是以args []的形式傳遞給它的數組列表。

不,你沒有處理ArrayList,除了數組。這就是String[] args被宣佈爲和它實際上是什麼。

我需要使用的sendMessage方法來顯示聊天在遊戲中和在那裏我試圖從我的ArrayList中,什麼是聊天發送創建一個普通的字符串是「[Ljava.lang.String; @」消息。

當您在字符串數組上調用toString()時,您所看到的是預期結果。不要這樣做。可以使用java.util.Arrays.toString(myArray),也可以循環通過從循環內抽取數組中所遇到的每個String項的數組。

例如,

String msg = java.util.Arrays.toString(args); 
OnlinePlayers.sendMessage(ChatColor.GREEN + Player.getName() + ": " + msg); 

順便說一句,請學習和使用Java命名約定。變量名稱應以小寫字母和類,接口以及帶大寫字母的枚舉開頭。這將有助於防止您的代碼混淆。

String Msg = new String(args.toString());

另外2號,不要使用new String(...)除非你有很強的理由這樣做。這將阻止Java使用字符串池中已有的字符串,使用不必要的對象填充堆。一個簡單的foo.toString()是所有需要代替new String(foo.toString())的地方。


編輯有關:

String NewMsg = null; 

String Msg = java.util.Arrays.toString(args); 

for(int i = 0; i <= Msg.length() - 1; i++) { 

    NewMsg = (args[i] + " "); 

} 

不,你可能需要使用java.util.Arrays.toString(...)一個for循環,而不是兩個。如果你使用for循環,你的數組需要保留一個數組。此外,作爲for循環的最大索引計數,Msg String的長度有多少?

而是你的邏輯應該是(僞)

Declare a String variable, msg. Assign "" to it. 
For int variable i goes from 0 to less than the length of the args array 
    concatenate the i'th args item to the msg String. 
use your msg String as needed. 
+0

現在在聊天中,消息顯示爲「Player:['Hello','guys']」,我如何修改此代碼以使其顯示爲「Player:Hello guys」。我需要它來處理輸入的任何字數。 – RossGosling

+0

@ user2719632:用for循環創建您的字符串。我相信你能弄清楚這個代碼。 :)爲什麼不試一試,如果你的代碼不起作用,就把你的嘗試作爲編輯粘貼到你的問題上面。 –

+0

@ user2719632:請參閱編輯以回答。 –