所以我只是有一个简单的问题。该程序应该创建一个字符数组,并从文本文件中获取内容,其中包含许多随机符号,如&,?,!,字母和数字。我不允许创建单独的数组,而是将它们放入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是我从文件中读取的扫描程序。谢谢!
答案 0 :(得分:0)
首先,您需要为变量使用更多描述性名称。例如,为什么在a
真正表示文件中的行数时命名变量a
?相反,请使用numRows
(同样适用于b
,使用numCols
)。另外,您确实应该将扫描仪命名为scanner
。有一个FileReader
课程,而您的fileReader
变量名称具有误导性 - 这会让每个人都认为您使用的是FileReader
而不是Scanner
。最后,用于在Java中声明数组类型的括号通常与类型名称相邻,如char[][]
而不是char [][]
。这不会改变代码执行的方式,但它更符合常规约定。
现在,你的问题。您声明行/列的数量在文件的开头声明。此解决方案假定文件实际上包含numRows
行和numCols
列。基本上,next
会返回String
。您可以使用String.toCharArray
将String
转换为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];
}
}