一维java数组的问题

一维java数组的问题,java,arrays,Java,Arrays,我的一个java类中出现了一个空指针异常。 我一直在看这个东西,现在我可以用另一双眼睛了。 我有两个类文件: 文件分析器: /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package photouploader; import java.nio.*; import java.io.*; import java.util.*; /**

我的一个java类中出现了一个空指针异常。 我一直在看这个东西,现在我可以用另一双眼睛了。 我有两个类文件: 文件分析器:

    /*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package photouploader;
import java.nio.*;
import java.io.*;
import java.util.*;

/**
 *

 * @author 10339
 */
public class fileParser {
    /*var Decleration*/
    private File dir;
    private File [] Files;
    public String [] Filernames; 

    /*Accessor Methods*/
    public File getDir(){
        return dir;
    }
    public void SetDir(File directory){
        dir=directory;
    }
    public File[] getFiles(){
        return Files;
    }
    public void setFiles(File [] matches){

            Files=matches.clone();
        }
        public String [] getFilenames(){
            return Filernames;
        }
        public void setFilenames(){

        for(int i=0;i<Files.length;i++){
            System.out.println(Files[i].toString());
            System.out.println(Files[i].toString().substring(Files[i].toString().lastIndexOf("\\")+1));
            Filernames[i]=Files[i].toString().substring(Files[i].toString().lastIndexOf("\\")+1);
        }
    }
}
我试图将数据放置在过滤器名称的位置0处,但它仍然异常。 我错过什么了吗? 使用前是否需要声明数组的大小? 谢谢
Scorliss

您必须为数组元素分配内存:

Filernames = new String[Files.length];
编辑:

那么仅仅声明是不够的


不。简而言之,当你声明变量时,你只是说“这个变量将指向一个数组”。在那一刻,它根本不包含任何数组。要使用该变量,必须向该变量分配一个数组。您可以阅读更多有关数组基础知识的内容。

字符串[]Filernames的声明不是这样的:字符串[]Filernames=newstring[5];
(or=newstring[some length];)您还应该遵循Java代码惯例,例如只有类名以大写字母开头,变量名以小写字母开头。

THX就是这样。那么仅仅声明是不够的?谢谢你这么说。我会潜得更深一点。
Filernames = new String[Files.length];