Java 新手:
我正在练习这个东西:从方法调用数组到main方法时如何停止无限循环?
public static String[] ArrayColors() {
String MyColors[] = { "Red", "Blue", "Green"};
return MyColors;
}
public static String WriteArray() {
for (int i = 0; i < 2; i++) {
for (String lines : ArrayColors()) {
switch (i) {
case 0:
lines = lines.replace("Red", "Blood");
break;
case 1:
lines = lines.replace("Blue", "Ocean");
break;
case 2:
lines = lines.replace("Green", "Giant");
break;
}
System.out.println(lines);
}
System.out.println();
}
return WriteArray().toString();
}
public static void main(String[] args) {
System.out.println(WriteArray());
}
最佳答案
递归循环是由语句引起的
return WriteArray().toString();
在 WriteArray()
方法的末尾。
如果您希望该方法只打印它打印的内容,那么您应该将其声明为void
,即
public static void WriteArray()
否则,您需要在打印时保存所有打印的行,例如
public static String WriteArray()
{
StringBuilder sb = new StringBuilder(); // Buffer to store the printed lines
for (int i = 0; i < 2; i++) {
for (String lines : ArrayColors()) {
switch (i) {
case 0:
lines = lines.replace("Red", "Blood");
break;
case 1:
lines = lines.replace("Blue", "Ocean");
break;
case 2:
lines = lines.replace("Green", "Giant");
break;
}
System.out.println(lines);
sb.append(lines); // Store the printed line
}
System.out.println();
sb.append("\n"); // Store a blank line
}
return sb.toString();
}
一些其他可能的改进:
- 您不需要访问颜色的方法,因此您可以将
MyColors
变量直接放入循环中,即for (String lines : MyColors)
。 - 如果您仍想使用某个方法,则根本不要声明
MyColors
并返回{ "Red", "Blue", "Green"}
值直接。 - 尽量遵循
Java
命名约定:只有类名以大写字母开头,其他所有名称都以小写字母开头,例如它应该是arrayColors
而不是ArrayColors
。
关于java - 从静态方法调用和写入数组时如何停止无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21638808/