• JAVA去注释小程序


    采用状态机的设计思路,实现一个去注释的小程序;去掉/**/和//两种注释:

    View Code
     1 package com.app;
    2
    3 import java.io.File;
    4 import java.io.FileInputStream;
    5 import java.io.FileNotFoundException;
    6 import java.io.FileOutputStream;
    7 import java.io.FileWriter;
    8 import java.io.IOException;
    9 import java.io.InputStream;
    10 import java.io.InputStreamReader;
    11 import java.io.OutputStream;
    12 import java.io.OutputStreamWriter;
    13 import java.io.Reader;
    14 import java.io.Writer;
    15 import java.util.Stack;
    16
    17 public class app {
    18 public enum stype{
    19 stype_type1, //当前是/*
    20 stype_type2, //当前是//
    21 stype_type3, //当前是数据
    22 }
    23
    24 private static stype app_stype;
    25
    26 public app(){
    27 app_stype = stype.stype_type3;
    28 }
    29
    30 /**
    31 * @param args
    32 */
    33 public static void main(String[] args) {
    34 // TODO Auto-generated method stub
    35 try{
    36 File Orifile = new File(app.class.getResource("main.cpp").getFile());
    37 File Desfile = new File("bak_" + Orifile.getName().toString());
    38
    39 InputStream in = new FileInputStream(Orifile);;
    40
    41 Reader reader = new InputStreamReader(in);
    42 FileWriter fw = new FileWriter(Desfile);
    43
    44 int curtemp = 0;
    45 int pretemp = 0;
    46
    47 while((curtemp = reader.read()) != -1){
    48
    49 if(app_stype == stype.stype_type1){
    50 if(('*' == pretemp)&&('/' == curtemp)){
    51 app_stype = stype.stype_type3;
    52 }
    53 }else if(app_stype == stype.stype_type2){
    54 if(('\n' == curtemp)&&('\r' == pretemp)){
    55 app_stype = stype.stype_type3;
    56 }
    57 }else{
    58 if(('/' == pretemp)&&('*' == curtemp)){
    59 app_stype = stype.stype_type1;
    60 }else if(('/' == pretemp)&&('/' == curtemp)){
    61 app_stype = stype.stype_type2;
    62 }else{
    63 if(('/' != curtemp)&&('*' != curtemp)){
    64 if(('/' == pretemp)&&('*' == pretemp)){
    65 fw.write(pretemp);
    66 }
    67 fw.write(curtemp);
    68 }
    69 }
    70 }
    71
    72 pretemp = curtemp;
    73 }
    74
    75 fw.flush();
    76 fw.close();
    77 in.close();
    78
    79
    80 } catch (FileNotFoundException e) {
    81 // TODO Auto-generated catch block
    82 e.printStackTrace();
    83 } catch (IOException e) {
    84 // TODO Auto-generated catch block
    85 e.printStackTrace();
    86 }
    87
    88 }
    89
    90 }



  • 相关阅读:
    计算器修正代码
    AsEnumrable和AsQueryable的区别
    c# 解释器模式与sping.net表达式的结合应用(金融里经常需要用到公式,这个公式是抽象的需要自己解释)
    Spring.net 间接调用被AOP拦截的方法失效(无法进入aop的拦截方法)
    信息熵公式的由来(转)
    期望风险、经验风险与结构风险之间的关系(转)
    梯度(转)
    奇特的数学问题(转)
    最大似然估计和最大后验估计(转)
    贝叶斯思想以及与最大似然估计、最大后验估计的区别(转)
  • 原文地址:https://www.cnblogs.com/fredric/p/2382804.html
Copyright © 2020-2023  润新知