Java在单元格数减半后开始读取null

Java在单元格数减半后开始读取null,java,file-io,Java,File Io,我在一个CLI电子表格程序上做一个项目。我使用此代码从文件中输入: DataInputStream in=new DataInputStream(System.in); System.out.print("\nEnter filename (with path) - "); String fn=in.readLine(); FileReader fr=new FileReader(fn); BufferedReader br=new BufferedRea

我在一个CLI电子表格程序上做一个项目。我使用此代码从文件中输入:

    DataInputStream in=new DataInputStream(System.in);
    System.out.print("\nEnter filename (with path) - ");
    String fn=in.readLine();
    FileReader fr=new FileReader(fn);
    BufferedReader br=new BufferedReader(fr);

    String sen="";
    while(true)
    {
        String sn=br.readLine();
        if(sn==null)
            break;
        sen=sen+sn;
    }
    StringTokenizer st=new StringTokenizer(sen,"|");
    String s[][][]=new String[(st.countTokens()/9)][9][3];
    int r_0=(st.countTokens()/9);
    int r,c;
    r=c=0;

    for(int i=0;i<st.countTokens();i++)
    {
        StringTokenizer st1=new StringTokenizer(st.nextToken(),"ɰ");
        s[r][c][0]=st1.nextToken();
        s[r][c][1]=st1.nextToken();
        s[r][c][2]=st1.nextToken();

        System.out.println(s[r][c][0]+"\t"+s[r][c][1]+"\t"+s[r][c][2]); // to be deleted
        c++;
        if(c==9)
        {
            r++;
            c=0;
        }
    }

您应该将for循环与

while (st.hasMoreTokens())
而不是用于-循环的
。无论如何,您没有使用
i


此外,
countTokens()
函数在检索令牌时会更改其值(请参见)

3D数组是一个等待发生的恐怖故事。@SotiriosDelimanolis,但它在[5,5,0]之前确实输入正确。请仔细检查数据,并确保它符合您期望的格式。@ErnestFriedman Hill当然是这样。我用同一个程序创建了这个文件(在另一个文件的帮助下)。让我烦恼的是,它在中途停止了正确的行为。你能发布一个你的输入样本,该读但不读吗?
while (st.hasMoreTokens())