0

私はJavaプログラミングの初心者です。課題を準備していますが、コードについてサポートが必要です。指示には、自分のメソッドnumberOfRows()convertFileArray()メソッドで例外を処理する必要があると書かれています。演習では、csvファイルからの読み取り、ファイルの多次元配列への変換、画面への配列の印刷で構成されます。私のプログラムは正常に動作しますが、私が抱えている唯一の問題は、これら2つの方法で処理できる例外がわからないことです。

どうしたらいいかわからないという理由だけで、一般的な例外を書きました。どんな提案も本当に役に立ちます。また、try-catchブロックを配置する必要があるクラスのみを投稿しています。前もって感謝します。

これが私のコードです:

import java.io.*;
import java.nio.file.*;
import java.util.StringTokenizer;

public class ReadFiles {
    int rows = 0;
    int columns = 0;
    String s = null;
    private String[][] arrayValues;
    Path filePath;

    public ReadFiles(String name) {

        filePath = Paths.get("C:\\stocks\\" + name);      //newMSFT.csv
        System.out.println("Path for file entered " + filePath.toString());

    }

    public boolean fileExists() {

        if(Files.exists(filePath))
            return true;

        else 
            return false;
    }

    public int numberOfRows() { 

        try {
            InputStream data = new BufferedInputStream(
              Files.newInputStream(filePath));
            BufferedReader reader = new BufferedReader(
              new InputStreamReader(data));
            s = reader.readLine();

            while(s != null) {
                rows++;
                s = reader.readLine();
            }    
        }

        catch(Exception e) {
            System.out.println("Message: " + e);
        }

        return rows;
    }

    public void convertFileArray() {

        try {
            InputStream data = new BufferedInputStream(
              Files.newInputStream(filePath));
            BufferedReader reader = new BufferedReader(
              new InputStreamReader(data));

            s = reader.readLine();   

            StringTokenizer z = new StringTokenizer(s, ",");
            columns = z.countTokens();

            arrayValues = new String[rows][columns];

            for(int x = 0; x < rows; x++) {
                z = new StringTokenizer(s, ",");

                //when there are still more tokens, place it in the array:
                int y = 0;
                while(z.hasMoreTokens()) {
                    arrayValues[x][y] = z.nextToken();
                    y++;
                }

                s = reader.readLine();
            }

            System.out.println("An array was created and has " +
              rows + " rows and " + columns + " columns.");
        } 

        catch(Exception e) {
            System.out.println("Message: " + e);
            e.printStackTrace();
        }
    }

    public void printArray() {  

        System.out.println("The data from the array is >> ");

        for(int a = 0; a < rows; a++) {
            String output = null;    

            for(int b = 0; b < columns; b++) {
                System.out.print(arrayValues[a][b] + "  ");

            }
            System.out.println();
        }
    }

    public String[][] getArrayValues() {
        return arrayValues;
    }

 }
4

3 に答える 3

0

あなたがしていることのほとんどは、 IOExceptionをスローするもののように見えます。

于 2013-03-27T04:24:49.350 に答える
0

このようにIDEを使用する場合はeclipse、処理する必要のある例外が表示されます。

あなたのプログラムにはIOExceptionconvertFileArray()numberOfRows()

于 2013-03-27T04:30:25.687 に答える
0

readLineメソッドはをスローしますIOException

try {
      s = reader.readLine();
    } catch (IOException e) {
      e.printStackTrace();
    }

また、Files.newInputStream(filePath)は、次の例外をスローします。

  • IllegalArgumentException-オプションの無効な組み合わせが指定された場合
  • UnsupportedOperationException-サポートされていないオプションが指定されている場合
  • IOException-I/Oエラーが発生した場合
  • SecurityException-デフォルトのプロバイダーの場合、セキュリティマネージャーがインストールされていると、checkReadメソッドが呼び出され、ファイルへの読み取りアクセスがチェックされます。

したがって、どのように、どの例外を処理するかはあなた次第です。

于 2013-03-27T04:33:13.970 に答える