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

标签 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());
}

最佳答案

递归循环是由语句引起的

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/

相关文章:

java - 将 Extended TreeMap 与 Hazelcast TreeMap 结合使用,充当 Hazelcast 分布式 Map。

java - 将 for-each 循环与返回迭代器的函数结合使用

java - 如何更改 Camunda 数据库以接受长字符串变量?

java - 简单单元测试中的 URLUtil.isHttpsUrl() 错误返回值? (返回默认值=真)

java - 如何在 Android 应用程序的单个数据库中创建两个表?

java - 如何实现将结果返回给事件调度线程的方法?

java - 使用足够多的枚举器和抽象方法创建枚举有多糟糕

java - 声明类级变量 JAVA

java - 不再需要 Android O 转换为 findViewById?

java - jarsigner 在退出 android 应用程序时返回 java.lang.NullPointerException 错误