Java 如何以字符串数组的形式返回for循环输出?

Java 如何以字符串数组的形式返回for循环输出?,java,Java,我希望它将输出返回到一个字符串数组中,以便稍后在我的main方法中使用,而不是打印输出id的for循环。这可能吗 public class FizzBuzz { public static void main(String[] args) { FizzBuzz runit = new FizzBuzz(); runit.run(20); } void run(int highestnumber) { System.

我希望它将输出返回到一个字符串数组中,以便稍后在我的main方法中使用,而不是打印输出id的for循环。这可能吗

public class FizzBuzz {

    public static void main(String[] args) {

        FizzBuzz runit = new FizzBuzz();
        runit.run(20);

    }

    void run(int highestnumber) {

        System.out.println("FizzBuzz will run until: " + highestnumber);
        System.out.println();

        for (int a = 0; a < highestnumber; a++) {

            if (a % 3 == 0 && a % 5 == 0) {
                System.out.println("FizzBuzz");
            }

            else if (a % 3 == 0) {
                System.out.println("Fizz");
            } else if (a % 5 == 0) {
                System.out.println("Buzz");
            } else {
                System.out.println(a);
            }

        }

    }
}

是的,您可以从runit方法返回一个字符串数组,作为publicstring[]runit。在runit方法中,在每个for循环中创建一个空的arrayList,而不只是在arrayList中打印add值


当for循环终止时,将此ArrayList转换为字符串数组并返回它。

当然,您可以这样做:

导入java.util.ArrayList; 公共课汽笛{ 公共静态无效字符串[]args{ FizzBuzz runit=新的FizzBuzz; String[]stuff=runit.run20; 弗斯特林:东西{ System.out.printlns; } } 公共字符串[]runint highestnumber{ ArrayList输出=新的ArrayList; System.out.printlnFizzBuzz将一直运行到:+最高位; System.out.println; 对于int a=0;a在我看来,其他的答案是过分的。没有必要为此使用ArrayList。只要初始化一个数组,就可以知道它有多大

然后,我将该方法设置为私有。您应该始终使您的方法尽可能私有

public class FizzBuzz {

    public static void main(String[] args) {
        FizzBuzz runit = new FizzBuzz();
        String[] result = runit.run(20);
        for (String s : result) {
            System.out.println(s);
        }
    }

    private String[] run(int highestnumber) {
        String[] ret = new String[highestnumber];
        System.out.println("FizzBuzz will run until: " + highestnumber);
        System.out.println();

        for (int a = 0; a < highestnumber; a++) {
            if (a % 3 == 0 && a % 5 == 0) {
                ret[a] = "FizzBuzz";
            } else if (a % 3 == 0) {
                ret[a] = "Fizz";
            } else if (a % 5 == 0) {
                ret[a] = "Buzz";
            } else {
                ret[a] = Integer.toString(a);
            }
        }
        return ret;
    }
}

这确实是可能的,到目前为止你做了哪些尝试?你听说过吗?@AshvinSharma这真的不适合做架线工。他明确要求返回一个包含所有不同字符串的数组。StringBuilder不会给你这个,它最终只会给你一个简单的字符串。我想字符串文本列表会消耗permgen,这对JVM不好@GhostCat@GhostCat若数组是唯一的解决方案,那个么它是好的,但作为OP要求的解决方案,那个么有很多方法可以做到这一点,他可以自由选择任何一种。经过一些指导之后,他可以改变主意,在代码优化的指令中使用StringBulider或StringBuffer。为什么不返回ArrayList或正确初始化数组呢?好的,他需要一个数组,那么为什么要初始化需要导入的ArrayList呢?这太过分了。解决此问题不需要ArrayList。如果一个简单的字符串[]就足够了,甚至返回值也肯定不够,这就有点过分了true@psingh如果将来需要一个额外的参数,您仍然需要更改实现。对于一个已经有固定大小并且明确需要数组的问题,毫无理由地创建一个列表是毫无意义的。Deja vue。凉的他将从做作业的其他人那里学到很多东西。特别是考虑到你在那里做的各种事情,或者是错误的做法。例如,数组如何始终与highestnumber的大小相同,以便您可以轻松直接使用数组,但您创建的列表只是为了将其转换回数组。为什么要以这种方式从int转换为String,而不是使用Integer.toStringa,它是从您使用的重载方法调用的?