从静态方法调用和写入数组时如何停止无限循环

Asy*_*ous 1 java

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());
}
Run Code Online (Sandbox Code Playgroud)

PNS*_*PNS 5

递归循环是由语句引起的

return WriteArray().toString();
Run Code Online (Sandbox Code Playgroud)

WriteArray()方法的最后.

如果您希望方法只打印它打印的内容,那么您应该将其声明为void,即

public static void WriteArray()
Run Code Online (Sandbox Code Playgroud)

否则,您需要在打印时保存所有打印的行,例如

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();
}
Run Code Online (Sandbox Code Playgroud)

其他一些可能的改进:

  • 您不需要一种方法来访问颜色,因此您可以将MyColors变量直接放在循环中,即for (String lines : MyColors).
  • 如果您仍想使用方法,请不要声明MyColors{ "Red", "Blue", "Green"}直接返回值.
  • 尝试遵循Java命名约定:只有类名以大写字母开头,其他所有内容都以小写字母开头,例如它应该是arrayColors和不是ArrayColors.