Java块注释计数程序仅统计首个注释的问题求助
修复块注释统计程序的多注释计数问题
你的问题出在统计完第一个块注释后,状态没有重置回初始检测状态。当程序进入case 4(完成一个块注释的识别)后,只是单纯递增i,但状态一直保持在4,后续所有字符都只会走case 4的逻辑,再也不会回到初始的注释检测流程,自然没法统计后续的块注释。
修改方案
只需要在case 4里把状态重置为0,让程序重新开始检测新的注释:
import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; public class Main { public static void main(String[] args) throws FileNotFoundException { String file = new Scanner(new File("file")).useDelimiter("\\Z").next(); int length, state, i, j; state = 0; i = 0; j = 0; while (i < file.length()) { switch (state) { case 0: if (file.charAt(i) == '/') { state = 1; i++; } else i++; break; case 1: if (file.charAt(i) == '*') { state = 2; i++; } else i++; break; case 2: if (file.charAt(i) == '*') { state = 3; i++; } else i++; break; case 3: if (file.charAt(i) == '/') { state = 4; i++; j++; } else { state = 2; i++; } break; case 4: // 统计完一个注释后,重置状态回初始值,重新检测后续内容 state = 0; i++; break; default: String nothing = "nothing"; } } System.out.println("Number of comments " + j); } }
验证说明
修改后,当程序处理完一个块注释进入case 4时,会把state重置为0,接下来的字符会重新走初始检测逻辑,这样就能识别并统计后续的所有块注释了。测试多个注释的场景时,计数会正确累加。
内容的提问来源于stack exchange,提问作者TripleCute
相关产品推荐
相关产品推荐

