0

プロジェクトを完了させようとしていますが、運がありません。オンライン講座なので、連絡はメールのみです。彼は過去 5 日間に私の 4 つのメールにまだ返信していません。

そのため、この課題では、特定の会社の NASDAQ 株価情報を含む csv ファイルをダウンロードする必要がありました。私はGOOG(グーグル)を選びました。以下は、コード部分の要件です。

2 番目のファイル ReadFiles.java を作成します。これは、csv ファイルからデータを読み込むファイルです。注: テストには、より小さいバージョンのデータ ファイル (20 行) を使用することをお勧めします。ReadFiles.java クラスには、次のメソッドが必要です。

方法: ファイルが存在するかどうかを確認する

方法: csv ファイルの行数を調べる

メソッド: csv ファイルを多次元配列に変換します。

メソッド: PrintArray

メソッド: 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);
    }
}

コースのために渡された本は役に立ちません。「例」と「実行する」の部分はすべてエラーになります。また、章全体で、この割り当ては、配列についての 1 つの言及ではなく、基づいています。

このコードを実行すると、エラーは発生しません。次のように表示されます。

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

DataAnalyzer と ReadFiles の 2 つのクラスを定義する必要があります。必須ではありませんが、通常はクラスごとに 1 つのファイルがあります。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 に伝える必要があります (コンストラクターが適切な選択のようです)。

私のアドバイスは、スケルトン構造を作成し (それが何であるかは既に説明済みです)、各メソッドの機能を一度に 1 つずつ作成することです。

于 2013-03-25T02:05:45.117 に答える