【问题标题】:Iterating through array using for loop - keeps failing?使用 for 循环遍历数组 - 一直失败?
【发布时间】:2016-09-09 09:04:08
【问题描述】:

(这里是你好世界级测试器) 我有一个 java 应用程序来删除一堆文件后测试以保持一切干净,但问题是我似乎无法让它工作,这是我第一次接触数组,它稍微复杂一些比他们在教程中展示的那些,任何帮助将不胜感激。

    String[] fileArray;
    fileArray = new String[8];

    fileArray[0] = "/Downloads/file1.csv";
    fileArray[1] = "/Downloads/file2.csv";
    fileArray[2] = "/Downloads/file3.csv";
    fileArray[3] = "/Downloads/file4.csv";
    fileArray[4] = "/Downloads/file5.csv";
    fileArray[5] = "/Downloads/file6.csv";
    fileArray[6] = "/Downloads/file7.csv";
    fileArray[7] = "/Downloads/file8.csv";

    String home = System.getProperty("user.home");
    File filePath = new File(home+fileArray); 
    System.out.println(filePath);

    for (String count: fileArray) {
    if (filePath.exists()) {
        filePath.delete();
        System.out.println("Deleted");
    }
    else
    {
        System.out.println("failed");
        Assert.fail();
    }
    System.out.println(count);
    }

【问题讨论】:

  • 将您的代码包装在 try catch 中,请填写您遇到的异常或错误
  • 你认为File filePath = new File(home+fileArray); 是做什么的?
  • @Chief 我在想我可以将它用作目录并将其用于迭代,我错了:D

标签: java arrays iteration


【解决方案1】:

您应该为数组中的每个元素连接新的文件路径,因此需要在for 正文中处理文件。因此,在每次迭代中,您都会进入变量filePath 数组的下一个元素,然后您需要将此变量连接到基本路径home + filePath。现在您正在查看所需的文件,您可以创建 file 对象并使用它。

String[] fileArray;
fileArray = new String[8];

fileArray[0] = "/Downloads/file1.csv";
fileArray[1] = "/Downloads/file2.csv";
fileArray[2] = "/Downloads/file3.csv";
fileArray[3] = "/Downloads/file4.csv";
fileArray[4] = "/Downloads/file5.csv";
fileArray[5] = "/Downloads/file6.csv";
fileArray[6] = "/Downloads/file7.csv";
fileArray[7] = "/Downloads/file8.csv";

String home = System.getProperty("user.home");


for (String filePath: fileArray) {
    File file = new File(home + filePath); 
    System.out.println(filePath);
    if (file.exists()) {
        file.delete();
        System.out.println("Deleted");
    } else {
        System.out.println("failed");
        Assert.fail();
    }
}

您似乎希望在变量count 中您会看到许多迭代文件。在这种情况下,它不会像这样工作。这种for 的形式如下所示:for (String arrayElement : arrayToWorkWith) - 意味着在变量arrayElement 的每次迭代中,将放入数组arrayToWorkWith 中的下一个元素。如果您需要在迭代期间计算元素的数量,您可以引入单独的变量并增加它或使用另一种形式的 for 循环 - for (int i = 0; i < fileArray.length; i++)

【讨论】:

    【解决方案2】:

    试试这个方法

     String[] fileArray;
        fileArray = new String[8];
    
        fileArray[0] = "/Downloads/file1.csv";
        fileArray[1] = "/Downloads/file2.csv";
        fileArray[2] = "/Downloads/file3.csv";
        fileArray[3] = "/Downloads/file4.csv";
        fileArray[4] = "/Downloads/file5.csv";
        fileArray[5] = "/Downloads/file6.csv";
        fileArray[6] = "/Downloads/file7.csv";
        fileArray[7] = "/Downloads/file8.csv";
    
        String home = System.getProperty("user.home");
        //File filePath = new File(home+fileArray);  thats wrong here and will give you a invalid file anyway as you concatenating a string with an object
    
    
        for (String file: fileArray) {
        File filePath = new File(home+file); //here you need to define the file
        if (filePath.exists()) {
            filePath.delete();
            System.out.println("Deleted");
        }
        else
        {
            System.out.println("failed");
            Assert.fail();
        }
        System.out.println(file);
        }
    

    【讨论】:

    • 它不会编译 - 因为你删除了 count 变量但仍然输出它。
    • @sphinks 谢谢,这是不好的因素。我现在重命名了变量。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-09
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 2017-01-02
    • 2016-01-20
    • 1970-01-01
    相关资源
    最近更新 更多