0

ファイルからデータを読み取るように設計された単純な netbeans プロジェクトで作業しています。ファイルには 5 行あり、それぞれに 2 つのフィールドがあります (1 つはアイテムを識別するためのもので、もう 1 つはアイテムの数量を識別するためのものです)。私の問題は、プログラムを実行すると、最初の行 (つまり、アイテム #1 とその数量) だけが読み取られ、他の 4 行は無視されることです。最初の行だけでなく、5 行 (または任意の数) の行すべてを読み取るにはどうすればよいですか? 申し訳ありませんが、これは初歩的なものに違いないことを知っています.Javaを学び始めたばかりで、誰かが私を教育するのを手伝ってくれることを願っています! ありがとう!

要求に応じて、ここに私が使用しているコードがあります (そして、その価値のために、最初の行は項目 3 であるため、印刷では、50 の数量を返す part3total を除いて、すべて 0 として返されます):

public static void main(String[] args)
{

    int snum;
    int quantity;
    int part1total, part2total, part3total,part4total, part5total;

    part1total = 0;
    part2total = 0;
    part3total = 0;
    part4total = 0;
    part5total = 0;

    InputFile orderinfo;        
    orderinfo = new InputFile("sprocketorders.txt");

    snum = orderinfo.readInt();
    quantity = orderinfo.readInt();


    switch(snum)
    {
        case 1:     part1total = part1total + quantity;
        break;
        case 2:     part2total = part2total + quantity;
        break;
        case 3:     part3total = part3total + quantity;
        break;
        case 4:     part4total = part4total + quantity;
        break;
        case 5:     part5total = part5total + quantity;
        break;
    }

    System.out.println(part1total);
    System.out.println(part2total);
    System.out.println(part3total);
    System.out.println(part4total);    
    System.out.println(part5total);
4

4 に答える 4

4

あなたはJavaを始めていて、あなたのケースは最初の行だけを読むことに関するものなので、残りを反復する構造なしで最初の行だけを読んでいると思います。

を使用して開始できますwhile。それを疑似コードに入れるには (それを整理して自分で試すことができるようにするため)、1 つの代替方法は次のようにすることです。

while(There are more lines to read) {
    Read next line
    Process line
}
于 2013-07-24T17:27:37.137 に答える
0

このコードを試すことができます:

    File archivo = null;
    FileReader fr = null;
    BufferedReader br = null;

    try {
        archivo = new File("example.txt");
        fr = new FileReader(archivo);
        br = new BufferedReader(fr);

        // Lectura del fichero
        String linea;
        while ((linea = br.readLine()) != null)
            System.out.println(linea);
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        try {
            if (null != fr) {
                fr.close();
            }
        } catch (Exception e2) {
            e2.printStackTrace();
        }
    }
于 2013-07-24T17:27:44.550 に答える