我可以在Java中使数组的每个索引等于不同的String值吗?

时间:2015-03-18 15:32:04

标签: java arrays for-loop

对于我正在制作的程序,我需要使Files数组的每个索引等于不同的String变量。我尝试使用for循环迭代每个索引,然后将其分配给不同的String变量,但没有运气。

代码:

final String user = System.getProperty("user.home");
final String OS = System.getProperty("os.name")
if (System.getProperty("os.name").equals("Mac OS X")){
        File folder = new File(user+"/example");
        // if file doesn't exist, then create it
        if (!folder.exists()){
            folder.mkdir();
        }

        File[] listOfFiles = folder.listFiles();

        for (int i = 0; i < listOfFiles.length; i++) {
          if (listOfFiles[i].isFile()) {
            System.out.println(listOfFiles[i].getName());
          } else if (listOfFiles[i].getName().equals(".DS_Store")){
              listOfFiles[i].delete();
          }
        }  
    }

1 个答案:

答案 0 :(得分:0)

如果你有一个File[],并且想要为数组的每个索引分配一个String,那么你有两个选择,因为对象数组只能保存其指定类的对象和它们的类的对象& #39;的子类。

您的第一个选择是以Object[]而不是File[]开头。这样,假设您有n个文件

Object[] filesThenStrings = new Object[n];

//Populate filesThenStrings with File objects here, 
//this is legal since all classes are a subclass of Object 
//and java does upcasting for you

for(int i = 0; i < n; i++) {
  filesThenStrings[i] = someString; //where this is the string you
                                    //want to replace the i-th file with
}

否则,你可以这样做。再假设n个文件,

File[] files = new File[n];

//populate here

String[] correspondStrings = new String[n];

for(int i = 0; i < n; i++) {
  correspondStrings[i] = someString; //where someString pertains to
                                     //files[i]
}