读书人

一道JAVA编程题目,该如何解决

发布时间: 2012-05-28 17:59:33 作者: rapoo

一道JAVA编程题目
对一个Java文件进行格式化,要求:

1、每个import占一行

2、packagte占一行

3、类的声明部分占一行,以{结束;

4、每个成员变量占一行,缩进4个字符;

5、方法定义缩进4个字符,方法头占一行,以{结束;

6、方法中的每一句代码占一行,相当于方法再缩进4个字符;

7、for if while等里面的代码相对于本身要缩进4个字符;

8、方法的右括号和类右括号要分别和方法、类的定义对应。

可以参考Eclipse中的代码格式化功能。

题目的输入是要格式化的文件的路径,输出是包含格式化后的内容的文件。



例如原来的文件是这样:


import java.util.Hashtable;

public class MyObject<First,Second>{ private First first; private Second second; public First getFirst(){ return first; }

public void setFirst(First f){
first = f;
}

public Second getSecond(){
return second;
}
public void setSecond(Second s){
second = s;
}

}

格式化后变成:

import java.util.Hashtable;

public class MyObject<First,Second>{
private First first;
private Second second;
public First getFirst(){
return first;
}
public void setFirst(First f){
first = f;
}

public Second getSecond(){
return second;
}
public void setSecond(Second s){
second = s;
}

}






最好能加上注释,用到的类,还有主要方法的作用,谢谢







[解决办法]
你没用过eclipse吗??ctrl+shift+f自动的!!!为什么不用!!
[解决办法]
括号匹配用栈
缩进或者占一行之类的可以用pattern写正则式匹配
然后用stringBuilder之类的工具加工下重新输出就好了
具体实现交给下面的高手了
[解决办法]
LZ真是一个有想法的青年,支持一下
[解决办法]
曾经写过一个格式化代码的程序。其核心是分解字符串。每一行代码都要分解,分解后将有3种类型。注释,固定字符串,有效代码。每一行开始就要判断是否处于/*开头的注释中,如果是,除非这一行内有结束标记*/,否则整行就都是注释。格式化主要针对的是有效代码,字符串原封不动,注释顶多处理一下缩进。

后来以这个程序为基础,还作了个统计代码行数的工具。居然发现eclipse的统计代码行数的插件有问题。字符串中如果含有“/*”,则其后就当是注释处理了。虽然出现的可能性比较小,但是确实是问题,也不知道现在改了没有。

读书人网 >Java相关

热点推荐