2013-08-26 92 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:请参阅编辑以回答。 –