正在将文件读入维度未知的二维数组-Java

正在将文件读入维度未知的二维数组-Java,java,arrays,Java,Arrays,手头的任务是读取未指定尺寸的文件。。。我完成这项任务的唯一规定是,我只允许使用数组-不允许使用数组列表、列表、地图、树或任何其他类型的东西。。。只是数组 是的,我偷看了一个示例txt文件,它显示了如下值: 0 2 3.0 1 0 2.0 2 1 7.0 2 3 1.0 3 0 6.0 但这并不是说将来用我的代码测试的所有可能的文件都是相同的维度 我尝试了普通的.hasNext()操作来计算文件中有多少元素,但是我没有找到一种方法来计算行数和列数 我是初学者,不知道怎么做。我看过buffere

手头的任务是读取未指定尺寸的文件。。。我完成这项任务的唯一规定是,我只允许使用数组-不允许使用数组列表、列表、地图、树或任何其他类型的东西。。。只是数组

是的,我偷看了一个示例txt文件,它显示了如下值:

0 2 3.0
1 0 2.0
2 1 7.0
2 3 1.0
3 0 6.0
但这并不是说将来用我的代码测试的所有可能的文件都是相同的维度

  • 我尝试了普通的.hasNext()操作来计算文件中有多少元素,但是我没有找到一种方法来计算行数和列数
  • 我是初学者,不知道怎么做。我看过bufferedreader的例子,但如果不知道它的实际用途,就无法理解它的用法以及该类中使用它的函数
代码:


在定义数组之前,请尝试查找oud维度。。。 可以使用如下截取的内容来计算行数:

public int countDimensions(String mytxtFile) throws IOException {
    InputStream contentOfFile = new BufferedInputStream(new FileInputStream(mytxtFile));
    try {
        byte[] a = new byte[1024];
        int counter = 0;
        int readMyChars = 0;
        boolean emptyfile = true;
        while ((readMyChars = contentOfFile.read(a)) != -1) {
            emptyfile = false;
            for (int i = 0; i < readMyChars; ++i) {
                if (a[i] == '\n') { ++counter;}}
        }
        return (counter == 0 && !emptyfile) ? 1 : counter;
    } finally {contentOfFile.close();}
}
public int countDimensions(字符串mytxtFile)引发IOException{
InputStream contentOfFile=新的BufferedInputStream(新文件InputStream(mytxtFile));
试一试{
字节[]a=新字节[1024];
int计数器=0;
int readMyChars=0;
布尔值emptyfile=true;
而((readMyChars=contentOfFile.read(a))!=-1){
emptyfile=false;
for(int i=0;i
-现在您已经获得了阵列的第一个维度

行中元素的数量可以通过计算行中的“分隔符”来定义,如空格或特殊字母。。。 我不知道您希望如何将数据放入数组,或者您希望如何处理数据…但是如果我正确理解您的意思,这可能会起作用


但请注意:整个解决方案不太美观、效率不高,不推荐使用。

您尝试过什么?你有什么问题?你需要问一个更具体的问题。把文件读两遍。你第一次得到维度,第二次把项目放入你用这些维度创建的数组中。用你找到的例子把一些代码放在一起,然后用一个问题贴出来。类似于“为什么我在这个代码中出现X错误?”的东西会给我们一些可以处理的东西,并表明您已经尝试了一些东西。目前,这个问题的唯一答案是为您编写代码,或者做一些太模糊的事情,无法真正起到帮助作用。我们真的很乐意帮忙@添加了一些代码
public int countDimensions(String mytxtFile) throws IOException {
    InputStream contentOfFile = new BufferedInputStream(new FileInputStream(mytxtFile));
    try {
        byte[] a = new byte[1024];
        int counter = 0;
        int readMyChars = 0;
        boolean emptyfile = true;
        while ((readMyChars = contentOfFile.read(a)) != -1) {
            emptyfile = false;
            for (int i = 0; i < readMyChars; ++i) {
                if (a[i] == '\n') { ++counter;}}
        }
        return (counter == 0 && !emptyfile) ? 1 : counter;
    } finally {contentOfFile.close();}
}