0

こんにちは、私を悩ませているこの1つのエラーがあります!!

私がやろうとしているのは、「;」を使用するテキストファイルを分割することです

その後、ArrayListに保存しますが、このエラーがポップアップし続けます!!

package au.edu.canberra.g30813706;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import android.app.Activity;
import android.os.Environment;
import android.widget.EditText;


public class FileReader extends Activity{{

    ArrayList<String> sInfo = new ArrayList<String>();

    String txtName = "AccomodationTxt.txt";
    File root = Environment.getExternalStorageDirectory();
    File path = new File(root, "CanberraTourism/" + txtName);

    try {

        BufferedReader br = new BufferedReader (
                            new InputStreamReader(
                            new FileInputStream(path)));
        String line;
        String[] saLineElements;
        while ((line = br.readLine()) != null)
        {
            //The information is split into segments and stored into the array
            saLineElements = line.split(";");
            sInfo.add(saLineElements[0], saLineElements[1], saLineElements[2], saLineElements[3], saLineElements[4]);

        }
         br.close();


    } 
    catch (FileNotFoundException e) {

        System.err.println("FileNotFoundException: " + e.getMessage());
    }}

}

エラー:

The method add(int, String) in the type ArrayList<String> is not applicable for the arguments (String, String, String, String, String)
4

5 に答える 5

0

コードには 2 つの問題があります。1 つ目は、arraylist add メソッドを間違って使用しようとしていることです。2 つ目は、非常に生の方法で情報を保存しようとしているということです。オブジェクト指向プログラミングにおける正しいアプローチは、データをオブジェクトで表現することです。ファイルの名前が示すように、宿泊関連のデータをセミコロンで区切ってファイルに保存しようとしている可能性があります。ファイルにセミコロンで区切られた属性を持つ宿泊施設データを表すクラス(「宿泊施設」など)を作成することをお勧めします。次に、次のような宿泊施設オブジェクトの Arraylist を作成します。

次に、ファイルの読み取りと各行の分割の同じロジックを使用して、次のように arraylist に宿泊施設オブジェクトを作成して追加します。 、saLineElements[4]))

宿泊施設クラスに適切なコンストラクターを追加してください。

OOPS の概念に従えば、コードの見栄えがよくなり、うまく機能するはずです。

それが役に立てば幸い!

于 2013-05-02T12:51:07.983 に答える