用java做一个去处源代码注释程序时遇到的问题。for循环一行一行输出的时候怎么让他不输出/*和*/中间的
我想用for循环把源代码一行一行地赋给一个bufferedstring,并且输出,但是遇到一个问题,就是遇到/*的时候,如果当前一行和下一行都没有遇到*/,怎么让它不输出...
我想用for循环把源代码一行一行地赋给一个bufferedstring,并且输出,但是遇到一个问题,就是遇到/*的时候,如果当前一行和下一行都没有遇到*/, 怎么让它不输出/*和*/中间的几行。
这是我目前的代码,现在做不下去了。 小弟是新手,求各位大哥帮忙想想啊。
import java.io.*;
public class Main3 {
public static void main(String[] args){
File fin = new File("input.in");
File fout = new File("output.out");
try{
String temp;
StringBuffer sb = new StringBuffer();
int st;
int ed;
int fr = 0;
BufferedReader br = new BufferedReader(new FileReader(fin));
BufferedWriter bw = new BufferedWriter(new FileWriter(fout));
for(;;){
if(br.readLine() != null){
temp = br.readLine();
sb.append(temp);
if(sb.indexOf("//") != -1){
st = sb.indexOf("//");
sb.delete(st,sb.length());
}
if(sb.indexOf("/*") != -1){
st = sb.indexOf("/*");
if(sb.indexOf("*/") != -1){
ed = sb.indexOf("*/");
sb.delete(st,ed);
}
else {
sb.delete(st,sb.length());
}
}
}
else break;
} 展开
这是我目前的代码,现在做不下去了。 小弟是新手,求各位大哥帮忙想想啊。
import java.io.*;
public class Main3 {
public static void main(String[] args){
File fin = new File("input.in");
File fout = new File("output.out");
try{
String temp;
StringBuffer sb = new StringBuffer();
int st;
int ed;
int fr = 0;
BufferedReader br = new BufferedReader(new FileReader(fin));
BufferedWriter bw = new BufferedWriter(new FileWriter(fout));
for(;;){
if(br.readLine() != null){
temp = br.readLine();
sb.append(temp);
if(sb.indexOf("//") != -1){
st = sb.indexOf("//");
sb.delete(st,sb.length());
}
if(sb.indexOf("/*") != -1){
st = sb.indexOf("/*");
if(sb.indexOf("*/") != -1){
ed = sb.indexOf("*/");
sb.delete(st,ed);
}
else {
sb.delete(st,sb.length());
}
}
}
else break;
} 展开
1个回答
展开全部
“遇到/*的时候,如果当前一行和下一行都没有遇到*/, 怎么让它不输出/*和*/中间的几行。”
遇到了/*,只要没遇到*/,那么就一直删除就行了,直到遇到*/ 为止。
所以你在for(;;) 循环前面加一个变量,比如:boolean flag = false; ,
然后在遇到了/* 时,把flag变量改成 true ,每次循环里,如果没有遇到*/,先判断 flag 变量,如果为true ,直接删掉,不管三七二十一。。 直到遇到了 */ ,把flag变量改成false 即可。。
遇到了/*,只要没遇到*/,那么就一直删除就行了,直到遇到*/ 为止。
所以你在for(;;) 循环前面加一个变量,比如:boolean flag = false; ,
然后在遇到了/* 时,把flag变量改成 true ,每次循环里,如果没有遇到*/,先判断 flag 变量,如果为true ,直接删掉,不管三七二十一。。 直到遇到了 */ ,把flag变量改成false 即可。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询