2015-11-08 36 views
0

嗨我很新的Java,我不知道如何完成我的代碼。我正在嘗試編寫一個讀取.txt文件的程序,並修復文本中的任何間距問題。我寫了一段代碼,在每個單詞之間放置一個空格,但我不確定如何讓它在。,!或?之後放置兩個空格。如何完成我的文件處理程序?

這是我到目前爲止有:

import java.io.*; 
import java.util.*; 

public class Word_Processor 
{ 
    public static void main(String[] args) 
    throws FileNotFoundException 
    { 
     Scanner input = new Scanner(new File("Programming3_text.txt")); 
     PrintStream output = 
      new PrintStream(new File("Programming3_text_fixed.txt")); 
     while (input.hasNextLine()) 
     { 
      String text = input.nextLine(); 
      echoFixed(text, output); 
      echoFixed(text, System.out); 
     } 
    } 
    public static void echoFixed(String text, PrintStream output) 
    { 
     Scanner data = new Scanner(text); 
     if (data.hasNext()) 
     { 
      output.print(data.next()); 
      while (data.hasNext()) 
      { 
       output.print(" " + data.next()); 
      } 
     } 
     output.println(); 
    } 
} 

我嘗試添加IF語句但這是行不通的。就像我說的我是Java和編程的新手,所以在這個問題上的任何幫助將不勝感激。

+0

嗨,歡迎光臨。不確定你的意思是「那不行」?你提到的標點符號是一個特例,'if'在特殊情況下很好。你如何確定標點是否存在?如果它存在,請做一件額外的事情...... – wwkudu

回答

0

更好的StringTokenizer

import java.io.*; 
import java.util.*; 

public class Word_Processor { 

    public static void main(String[] args) 
      throws FileNotFoundException { 
     Scanner input = new Scanner(new File("Programming3_text.txt")); 
     PrintStream output 
       = new PrintStream(new File("Programming3_text_fixed.txt")); 
     while (input.hasNextLine()) { 
      String text = input.nextLine(); 
      echoFixed(text, output); 
      echoFixed(text, System.out); 
     } 
    } 

    public static void echoFixed(String text, PrintStream output) { 
     Scanner data = new Scanner(text); 
     StringTokenizer tokenizer = new StringTokenizer(text, " .,!?");//put the replaceable characters here DON'T FORGET ' '(space) THERE IS ONE JUST AT THE START OF " .,!?" BEFORE '.' 
     String outputLine=""; 
     while (tokenizer.hasMoreTokens()) { 
      outputLine = outputLine + tokenizer.nextToken() + " "; 
     } 
     output.println(outputLine.trim()); 
     /* Previous Code 
     if (data.hasNext()) { 
     output.print(data.next()); 
     while (data.hasNext()) { 
     output.print(" " + data.next()); 
     } 
     } 
     output.println();*/ 
    } 
} 

go如果它的工作原理,將其標記爲解決方案。