我正在通过教科书自学 Java 编程。一个练习要求您编写一个重新格式化整个源代码文件的程序(使用命令行):
从此格式(下一行大括号样式):
public class Test
{
public static void main(String[] args)
{
// Some statements
}
}
到这种格式(行尾大括号样式):
public class Test {
public static void main(String[] args) {
// Some statements
}
}
这是我到目前为止的代码:
import java.io.*;
import java.util.*;
public class FOURTEENpoint12 {
public static void main(String[] args) throws IOException {
if (args.length != 2) {
System.out.println
("Usage: java FOURTEENpoint12 sourceFile targetFile");
System.exit(1);
}
File sourceFile = new File(args[0]);
File targetFile = new File(args[1]);
if (!sourceFile.exists()) {
System.out.println("File does not exist");
System.exit(2);
}
Scanner input = new Scanner(sourceFile);
PrintWriter output = new PrintWriter(targetFile);
String token;
while (input.hasNext()) {
token = input.next();
if (token.equals("{"))
output.println("\n{\n");
else
output.print(token + " ");
}
input.close();
output.close();
}
}
我有两个问题:
我尝试了许多不同的 while 块,但无法得到接近本书所要求的任何内容。我已经尝试过正则表达式、分隔符、令牌数组的不同组合,但仍然很遥远。
这本书要求您重新格式化单个文件,但该章从未解释过如何做到这一点。它仅说明如何将文本重写到新文件中。所以我只是编写了程序来创建一个新文件。但我真的很想按照问题要求的方式去做。
如果有人可以帮助我解决这两个问题,它实际上会解决我在很多练习中遇到的许多问题。提前致谢。