【问题标题】:How do I loop over arguments java?我如何循环参数java?
【发布时间】:2023-04-04 01:09:01
【问题描述】:

我必须创建大量文件来保存不同对象的输出,我想知道是否有一种使用循环的简单方法,而不是每次都输入整个内容。目前,我正在这样做,很快就会变得笨拙:

public void createFile(String fn, String fn1, String fn2, String fn3, String fn4, String fn5, String fn6){
    java.io.File filei = new java.io.File("fn.txt" );       
    java.io.PrintWriter earth1 = new PrintWriter(file);
    java.io.File file1 = new java.io.File("fn1.txt" );
    java.io.PrintWriter sun1 = new PrintWriter(file1);
    java.io.File file2 = new java.io.File("fn2.txt" );
    java.io.PrintWriter mercury1 = new PrintWriter(file2);
    java.io.File file3 = new java.io.File("fn3.txt" );
    ...etc
}

所以手动写出新文件的行。字符串 fn 的值为 earth,fn1 的值为 sun,fn2 的merge 等。我想在理想情况下使用 for 循环,但不知道如何循环参数!例如,我需要一种方法来使循环重新创建此模式:

java.io.File filei = new java.io.File("fn.txt");
java.io.PrintWriter fn1 = new PrintWriter(filei);

java.io.File filei = new java.io.File("fn1.txt");
java.io.PrintWriter (fn1)1 = new PrintWriter(filei);

每个参数我都需要一个打印机和文件。 printwriter 需要有一个名称,该名称是附加第一个参数的参数。该文件需要命名为“argument.txt”,所以我不确定我的代码目前是否可以实现 fn.txt、fn1.txt 等。我怀疑它会从字面上命名文件 fn、fn1 等,而不是使用参数表示的字符串,但在我完成更改之前无法检查,为此我需要循环。

这并不简洁,也可能不清楚。如果不清楚,请告诉我,我会尽量用词更好。

【问题讨论】:

  • 您可以将这些值作为数组或列表传递吗?喜欢公共无效createFile(String[] names) { for (String name : names) {...} }
  • @pzaenger 事实证明,我没有好好考虑这一点。我可以传递一个字符串数组,但前提是我可以以某种方式将对象的名称提取为字符串。例如,如果我创建一个名为 earth 的行星对象,我如何将值 earth 作为字符串?那么它可以传递给一个方法吗?
  • 为什么不通过行星对象本身?对象没有名称。变量确实有名称。不过,您可以在 Planet 对象中拥有 String 类型的 name 字段。
  • @JBNizet 这是一个绝妙的主意,让我的生活变得轻松多了!谢谢!

标签: java loops arguments


【解决方案1】:

传递 List<String>String[] 作为参数,而不是传递 6 个字符串。

或者将所有这些字符串放在方法开头的数组中,然后循环遍历该数组。

或者使用vararg参数,它允许传递尽可能多的字符串作为参数(来自调用者),同时在方法中接收一个数组:

public void createFile(String... fn) {
    for (String f : fn) {
        ...

在调用者中:

createFile("a", "b", "c");

【讨论】:

    【解决方案2】:

    正如 JB Nizet 建议的那样,但我推荐的最佳方法是使用 List fileNames 作为输入参数。

    【讨论】:

    • 不是回答,而是评论,也是判断
    猜你喜欢
    • 1970-01-01
    • 2022-07-07
    • 2021-06-20
    • 2021-01-01
    • 2017-12-25
    • 2018-01-21
    • 2011-08-28
    • 2013-06-27
    • 2017-06-10
    相关资源
    最近更新 更多