如何将包含大量符号的txt文件转换为数组?

时间:2016-04-23 00:44:04

标签: codeigniter

所以我只是有一个简单的问题。该程序应该创建一个字符数组,并从文本文件中获取内容,其中包含许多随机符号,如&,?,!,字母和数字。我不允许创建单独的数组,而是将它们放入2d数组中。我该怎么做呢?我已经知道了行数和列数,因为它在实际拥有所有符号和内容之前告诉我文件的顶部。这是我到目前为止所拥有的:

    char [][]charArray=new char[a][b];
    for(int z=0;z<charArray.length;z++)
    {
        for(int y=0;y<charArray[y].length;y++)
        {
            charArray[y]=fileReader.next();

        }
    }

因此A是行数,B是要读取的列数。当我运行该程序时,它表示它期望char [] charArray,并且它找到了一个字符串,并且该错误被称为不兼容的类型错误。 另外ps:fileReader是我从文件中读取的扫描程序。谢谢!

1 个答案:

答案 0 :(得分:0)

首先,您需要为变量使用更多描述性名称。例如,为什么在a真正表示文件中的行数时命名变量a?相反,请使用numRows(同样适用于b,使用numCols)。另外,您确实应该将扫描仪命名为scanner。有一个FileReader课程,而您的fileReader变量名称具有误导性 - 这会让每个人都认为您使用的是FileReader而不是Scanner。最后,用于在Java中声明数组类型的括号通常与类型名称相邻,如char[][]而不是char [][]。这不会改变代码执行的方式,但它更符合常规约定。

现在,你的问题。您声明行/列的数量在文件的开头声明。此解决方案假定文件实际上包含numRows行和numCols列。基本上,next会返回String。您可以使用String.toCharArrayString转换为char[]。然后,您只需将字符复制到charArray中的相应位置。

    Scanner scanner = new Scanner(theFile);

    char[][] charArray=new char[numRows][numCols];

    for (int i = 0; i < numRows; i++) {

        final char[] aLine = scanner.next().toCharArray();
        for(int j = 0; j < aLine.length;j++){
            charArray[i][j] = aLine[j];
        }

    }