2017-06-11 21 views
0

書かれたコードは、必要な行番号(3つの数値、たとえば001,002 .... 999)を削除するのではなく、ドキュメント全体を削除します(1行目から000を除いた1行目を示しています)。 000,001,002,003などの形式のテキストファイル全体の最初の列を削除する必要があります。 ここに私が実行しようとしているコードがあります。Javaのテキストファイルから行番号を削除する

import java.io.*; 
import java.io.FileNotFoundException; 
import java.util.Scanner; 

public class delete{ 

public static void main(String[] args){ 

try{ 

File file = new File("abc.txt"); // create File object to read from 
Scanner scanner = new Scanner(file);  // create scanner to read 

while(scanner.hasNextLine()){ // while there is a next line 

// hasNextLine() && 

    String line = scanner.nextLine(); // line = that next line 
    char []ch = line.toCharArray(); 
    StringBuilder sb = new StringBuilder(line); 

    // replace a character 
    String newLine = ""; 
    for(int i = 0; i < line.length();i++){ 

      if((scanner.hasNextLine()) && (Character.isDigit(ch[i]))){ 
       // delete three characters and go to next line 
       char chr = ' '; 
       sb.setCharAt(0,chr);     
       sb.setCharAt(1,chr); 
       sb.setCharAt(2,chr); 
       scanner.nextLine(); 
       newLine = sb.toString(); 

      } 

     } 

     // print to another file. 
     PrintWriter writer = new PrintWriter("abcd.txt"); // create file to write to 
     writer.println(newLine); 
     writer.flush(); 
     writer.close(); 
     scanner.close(); 
     } 
    }catch (Exception ex){ 
    ex.printStackTrace(); 
    } 
    } 
} 
+0

私の最初の2つの答えについて申し訳ありません。あなたの質問は以前は不明でしたが、今は明らかです。ありがとうございました。私は以下の正解を投稿しました。 – CodingNinja

答えて

0

それが今までプリントライターには何も追加せずに、文書全体をループするようにするには、forループ内scanner.nextLine()を呼び出しています。ドキュメントが最初の行しか持たないのは、最初に宣言したときから変わらないsb.toString()になるようにnewLineを常にスラミングしているからです。

外側のwhileループが各行を反復処理するため、内部のforループはまったく必要ありません。これらの行を繰り返して、最初の文字が数字であるかどうかを確認し、そうであれば置換してください。

+0

これは本当に質問に答えません。あなたは_one_問題をターゲットにしていましたが(多くありますが)、あなたはそれを修正しようとしませんでした。 – CodingNinja

0

あなたの質問を編集しましたが、今はもっと明確です。ありがとうございます。まず、すべて同じことをする3つのループがあります。私は簡略化し、4つのスペース(2ではなく)をインデントし、そのようにコードを短縮しました。行ごとの説明が含まれています:

public static void main(String[] args) { 
    try { 
     File file = new File("abc.txt"); //change to the location of your file 
     PrintWriter writer = new PrintWriter("abcd.txt"); //change to where you would like your file to be 
     Scanner scanner = new Scanner(file); 

     while(scanner.hasNextLine()) { //if statement and for loop are useless 
      String line = scanner.nextLine(); //increments line 
      StringBuilder sb = new StringBuilder(line); //makes line a sequence of char's 
      String newLine; //used for printing to file 
      char chr = ' '; //creates char equal to a space 
      sb.setCharAt(0, chr); //replaces first,   
      sb.setCharAt(1,chr); //second, 
      sb.setCharAt(2,chr); // and third char's with ' ' 
      newLine = sb.toString(); 
      writer.println(newLine); //prints the line without numers 
      writer.flush(); //flushes the stream 
     } 
    } catch (Exception ex) { //in case the file is not found 
     ex.printStackTrace(); //prints the error 
    }//end catch 
}//end main 
関連する問題