有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何完成我的文件处理程序?

嗨,我对java非常陌生,我不知道如何完成我的代码。我正试着写一个程序来读取。txt文件,并修复文本中的任何间距问题。我写了一个代码,在每个单词之间放置一个空格,但我不知道如何让它在a.,!,之后放置两个空格!,还是

以下是我到目前为止的情况:

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和编程的新手,因此在此问题上的任何帮助都将不胜感激


共 (1) 个答案

  1. # 1 楼答案

    最好使用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();*/
        }
    }
    

    如果有效,请将其标记为解决方案