问题描述
- 求帮忙理解一个JAVA程序,该程序的功能是将次行块风格的代码转换成行尾块
-
package exercise_9;
import java.util.*;
import java.io.*;public class Exercise9_16 {
/**Main method*/
public static void main(String[] args) throws Exception {
// Check command line parameter usage
if (args.length != 1) {
System.out.println(
"Usage: java Exercise9_16 filename");
System.exit(0);
}// Check if source file exists File sourceFile = new File(args[0]); if (!sourceFile.exists()) { System.out.println("Source file " + args[0] + " not exist"); System.exit(0); } StringBuilder buffer = new StringBuilder(); Scanner input = new Scanner(sourceFile); while (input.hasNext()) { String s = input.nextLine();//一行行输入 String s1 = s.trim();//把多出来的空格都删掉 if (s1.charAt(0) == '{') { buffer.append(" {"); if (s1.length() > 1) buffer.append("rn" + s.replace('{', ' ')); } else buffer.append("rn" + s); } input.close(); // Write buffer into the file PrintWriter output = new PrintWriter(sourceFile); output.print(buffer.toString()); output.close();
}
}if (s1.charAt(0) == '{') {这一行开始就看不太懂了,求解答
解决方案
比如
public void a()
{if(true)
{}
}
第一次读入 public void a(),放入了buffer中
读取到{if(true)时,判断到开始是{,那么把{放入buffer中,因为没有回车换行,也就是拼接到了public void a()后面,成了public void a() {
然后把buffer再拼接"rn"换行,s.replace('{', ' ')替换到第一个{,剩下if(true)放入buffer中,这就出来结果
public void a() {
if(true)
这种效果了。
时间: 2024-10-29 17:25:50