所以我应该写一个方法来打印数组的元素。我就这样做了:
public static void join(String phrase[])
{
for (int i = 0; i < phrase.length; i++)
{
System.out.print(phrase[i] + " ");
}
}
这段代码有效,但是教授说我们必须用这种方法返回一个字符串,而且我不知道如何这样做。我试过了:
public static String join(String phrase[])
{
for (int i = 0; i < phrase.length; i++)
{
String sentence = System.out.print(phrase[i] + " ");
return sentence;
}
}
Error: incompatible types: void cannot be converted to java.lang.String
我知道我不能使用.print因为该方法不是无效的。但是,我怎么打印?
有什么想法吗?这是一个初学的Java课程,所以我不知道其他任何方式。
答案 0 :(得分:2)
这也有效:
public static String join(String phrase[])
{
String sentence = "";
for (int i = 0; i < phrase.length; i++)
{
sentence += phrase[i] + " ";
}
return sentence;
}
以下是我正在做的事情:
1)在for循环外创建一个空字符串,用于保存数组的所有值
2)使用sentence += phrase[i] + " ";
3)一旦for循环将所有元素添加到字符串中,返回它!
答案 1 :(得分:1)
System.out.println
return void 您无法将void
分配给String
变量。您只想分配连接值,而不是打印它。
String sentence = phrase[i] + " "
sentence
你需要连接每个单元格,所以在循环之前声明一个变量并在循环中附加String
String sentence = "";
for (int i = 0; i < phrase.length; i++){
sentence += phrase[i] + " "; //same as sentence = sentence + phrase[i] + " ";
return sentence;
}
循环将以return
结束,因此String
中只会出现第一个值。只有在完成循环后才返回值。
String sentence = "";
for (int i = 0; i < phrase.length; i++){
sentence += phrase[i] + " ";
}
return sentence;
仅供参考:在同样的问题中,如果数组为空,则不返回任何值,因此它也是一个问题,因为方法应该在每种情况下都返回String
(或抛出异常。) / p>
更短的解决方案:
从Java 8
开始,可以使用String.join
简单地完成此循环
return String.join(" ", phrase);
答案 2 :(得分:1)
请执行以下操作:
public static String join(String phrase[]){
StringBuilder str = new StringBuilder();
for(String s: phrase){
str.append(s);
}
System.out.println(str);
return str.toString();
}
不要使用+ =并将字符串数组的值添加到另一个字符串,因为每次向预处理字符串添加新字符串时它都会创建一个新对象。而是使用更高内存效率的StringBuilder。
您还可以执行以下操作:
public static String join(String phrase[]){
String str = Arrays.toString(phrase);
System.out.println(str);
return str;
}
答案 3 :(得分:0)
这将打印每个元素并返回整个结果:
public static String printElements(String phrase[]) {
String result = "";
for (int i = 0; i < phrase.length; i++)
{
System.out.print(phrase[i] + " ");
result += phrase[i];
if( i != phrase.length - 1)
{
result += " ";
}
}
return result;
}