-1
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.LineNumberReader;

public class ReadingfromModellerOutput {

    public static void main(String args[])throws Exception
    {
       // BufferedReader br = new BufferedReader(new FileReader("ModellerOutput.txt"));
      LineNumberReader reader=  new LineNumberReader(new FileReader("ModellerOutput1.txt"));

        String line;
                while ((line = reader.readLine()) != null) 
        {
           if(line.startsWith("Summary"))
           {

            System.out.println(reader.getLineNumber());
             for(int i=reader.getLineNumber();i<=(reader.getLineNumber()+50);i++)
            {
               System.out.println(reader.getLineNumber());
                writeTofile(line);
            }   

             }
             }
           }
    public static void writeTofile(String line)
    {
        //System.out.println(reader.getLineNumber());
          //   for(int i=reader.getLineNumber();i<=(reader.getLineNumber()+50);i++)
           //  {
                 // System.out.println(reader.getLineNumber());
          try 
              {
            BufferedWriter bw = new BufferedWriter(new FileWriter(new File("Output_1.txt"), true));
            System.out.println("Hi");
            bw.write(line);
            bw.newLine();
            bw.close();
        }
        catch (Exception e) {}
    }

    }

拘束違反の概要:始まる行に続くテキスト ファイルから 50 行を抽出するコードを記述しようとしてい ます。助けてください。

4

4 に答える 4

3
System.out.println(reader.getLineNumber());
line = reader.readLine(); // You forgot to put this.
writeTofile(line);

また、ループのbreak;後に( 内に )を置くことを忘れないでください。forif50 lines

于 2013-03-11T06:27:02.883 に答える
1

forループ内の行を読むべきだと思います。

ただし、ファイルの終わりを再度確認する必要があります。この実装を見てください:

String line = reader.readLine();
while (line != null) {
    if (line.startsWith("Summary")) {
        for (int i = 0; i < 50; i++) {
            line = reader.readLine();
            if (line != null) {
                writeTofile(line);
            } else {
                break;
            }
        }
    }
}
于 2013-03-11T06:28:18.107 に答える
1
line = reader.readLine();

上記の行は for ループ内にあるはずです。

于 2013-03-11T06:31:42.877 に答える
0

このプログラムを試してください。適切な Break ステートメントで

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.LineNumberReader;

public class ReadingfromModellerOutput {

    public static void main(String args[])throws Exception
    {
       // BufferedReader br = new BufferedReader(new FileReader("ModellerOutput.txt"));
      LineNumberReader reader=  new LineNumberReader(new FileReader("ModellerOutput1.txt"));

        String line;
                while ((line = reader.readLine()) != null) 
        {
           if(line.startsWith("Summary"))
           {

            System.out.println(reader.getLineNumber());
             for(int i=reader.getLineNumber();i<=(reader.getLineNumber()+50);i++)
            {
               System.out.println(reader.getLineNumber());
                writeTofile(line);
            }   
             break;
             }
             }
           }
    public static void writeTofile(String line)
    {
        //System.out.println(reader.getLineNumber());
          //   for(int i=reader.getLineNumber();i<=(reader.getLineNumber()+50);i++)
           //  {
                 // System.out.println(reader.getLineNumber());
          try 
              {
            BufferedWriter bw = new BufferedWriter(new FileWriter(new File("Output_1.txt"), true));
            System.out.println("Hi");
            bw.write(line);
            bw.newLine();
            bw.close();
        }
        catch (Exception e) {}
    }

    }
于 2013-03-11T06:42:58.493 に答える