3 回答
TA贡献1821条经验 获得超4个赞
不确定您要在这里做什么,但是您分配给的任何s内容都不会对调用者生效:
public void sendChatPacket(String s, int id) {
boolean isUpperCase = Character.isUpperCase(s.length());
s = isUpperCase ? "<col=65280>\" + s + \"</col>" : "<col=255>\" + s + \"</col>";
}
Java中方法参数是按值传递的。即使您分配s给其他东西,调用者传递的参数也不会受到影响。
在你的调用者中,你也没有对传入的消息做任何事情。所以你的代码根本没有做任何有意义的事情。
如果这不是您的真实代码,请提供演示问题的代码。告诉我们预期的结果是什么以及您的示例代码如何不满足您的期望。
下次您提问时的一点建议:您在这里提供了太多不相关的上下文。比如这个题,你应该自己做过诊断,应该发现调用了之后sendChatPacket,结果出乎意料。您无需告诉我们任何颜色。您只是在操作一个字符串,而字符串操作并没有按预期工作。通过简化场景,您可以提供一个 MVCE,使人们更容易理解您的问题(因此,提供帮助)
TA贡献1825条经验 获得超6个赞
您是初学者,但请下次您提出问题时,请花更长的时间来解释您的目标......
以下代码将为以大写字母开头的单词选择第一种颜色,为所有其他单词选择第二种颜色
if (s != null && s.length() > 0) {
StringBuilder result = new StringBuilder(s.length() * 2);
result.append("<col=255>");
String[] split = s.split(" ");
for (String t : split) {
boolean isUpperCase = Character.isUpperCase(t.charAt(0));
if (isUpperCase)
result.append("<col=65280> " + t + "</col>");
else
result.append(" "+t);
}
result.append("</col>");
s = result.toString();
}
如果您正在打印纯 html,这将起作用...
无论如何,我强烈建议在进入复杂的事情之前先从基础开始......
添加回答
举报