0

我正在努力完成一个项目,但没有运气。这是一门在线课程,所以我唯一的交流方式是通过电子邮件。在过去的五天里,他还没有回复我的四封电子邮件。

因此,对于这项任务,我们必须下载一个包含特定公司纳斯达克股票价格信息的 csv 文件。我选择了 GOOG(谷歌)。以下是代码部分的要求。

创建第二个文件 ReadFiles.java。这是将从您的 csv 文件中读取数据的文件。注意:您需要使用较小版本的数据文件(20 行)进行测试。您的 ReadFiles.java 类需要以下方法:

方法:检查文件是否存在

方法:在csv文件中查找行数

方法:将csv文件转换为多维数组

方法:打印数组

方法:使用get方法返回数组

创建文件 DataAnalyzer.java。该文件将用于调用 ReadFiles.java 中的方法。请务必证明您的所有方法都可以通过 DataAnalyzer.java 工作。

这就是我到目前为止所拥有的。

package Analysis;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
import java.util.StringTokenizer;
import java.util.Scanner;

public class ReadFiles 
{
    public static int numberOfRows;
    public static int rowNumber = 0;
    public static int columnNumber = 0;

    public static void main(String[] args) 
    {
        Scanner kb = new Scanner (System.in);
        String fileName;
        System.out.print("Enter the file name >> ");
        fileName = kb.nextLine();
        File f = new File("D:\\Java\\Assignment 3\\" + fileName);
        if(f.exists())
        {
            System.out.print("File exists.");
        }
        fileName="D:\\Java\\Assignment 3\\" + fileName;
        try 
        {
            BufferedReader br = new BufferedReader(new FileReader(fileName));
            StringTokenizer st = null;

            while((fileName = br.readLine()) != null)
            {
                rowNumber++;
                numberOfRows++;

                st = new StringTokenizer(fileName, ",");

                while(st.hasMoreTokens())
                {
                        columnNumber++;
                        System.out.println("Row " + rowNumber + 
                                    ", Column " + columnNumber 
                                + ", Entry : "+ st.nextToken());
                }
                columnNumber = 0;
            }
        }       
        catch (FileNotFoundException e) 
        {
            e.printStackTrace();
        } 
        catch (IOException e) 
        {
            e.printStackTrace();
        }
    }
    public static void rows()
    {
        System.out.println("Total Rows: " + numberOfRows);
    }
}

我们为这门课得到的书没有帮助。所有“示例”和“你做”部分都会出错。同样在整章中,这个赋值是基于,没有提到一个数组。

当我运行此代码时,我没有收到任何错误。我看到以下内容:

File exists.
Row 1, Column 1, Entry : 30/12/2011
Row 1, Column 2, Entry : 642.02
Row 1, Column 3, Entry : 646.76
Row 1, Column 4, Entry : 642.02
Row 1, Column 5, Entry : 645.9
Row 1, Column 6, Entry : 1782300
Row 1, Column 7, Entry : 645.9
Row 2, Column 1, Entry : 29/12/2011
Row 2, Column 2, Entry : 641.49

我从第 1 行到第 19 行(整个文件)显示。

我不明白的是如何在这个类中创建单独的方法来转换为数组,打印数组并返回数组。

任何帮助将非常感激。

谢谢

4

1 回答 1

0

您需要定义 2 个类,DataAnalyzer 和 ReadFiles。通常每个班级都有一个文件,尽管这不是必需的。已经提供了 ReadFiles 的结构,因此您将拥有一个名为 ReadFiles.java 的文件,如下所示:

public class ReadFiles{

    //instance var(s)
    ...

    //constructor(s)
    ...

    //methods(s)

    /**
      * Checks whether the file exists
     */
    public boolean exists(){
        ....
    }

    /*
     * Number of rows in the file
     */
    public int getRowCount(){
        ....
    }

    // add the rest your self!!
}

}

您还需要一个名为 DataAnalyzer.java 的文件:

public class DataAnalyzer{

    public static void main(String args){
        //create ReadFiles and call it's methods and check they return what is expected
    }

}

假设 ReadFile 管理单个输入文件;它可能需要一个类变量来保存该信息。DataAnalyzer 需要告诉 ReadFiles 分析哪个文件(构造函数似乎是一个不错的选择)。

我的建议是创建您的骨架结构(您已经被告知它是什么)并开始一次构建每个方法的功能。

于 2013-03-25T02:05:45.117 回答