`
lt200819
  • 浏览: 188225 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

清除C/C++/JAVA中的注释

阅读更多

 

import java.io.FileInputStream;
import java.io.PrintStream;
import java.util.Scanner;

/* ********\\\\\\\\\\/////////********
 this is test program
 this is test program
 this is test program
 */
public class Solution {
	private static final char MARK = '"';

	private static final char SLASH = '/';

	private static final char BACKSLASH = '\\';

	private static final char STAR = '*';

	private static final char NEWLINE = '\n';

	private static final int TYPE_MARK = 1;

	private static final int TYPE_SLASH = 2;

	private static final int TYPE_BACKSLASH = 3;

	private static final int TYPE_STAR = 4;

	private static final int TYPE_DSLASH = 5;

	public static String removeComment(String s) {
		int preType = 0;
		int mark = -1, cur = -1, token = -1;
		char[] input = s.toCharArray();
		for (cur = 0; cur < input.length; cur++) {
			if (input[cur] == MARK) {
				if (preType == TYPE_BACKSLASH)
					continue;
				if (mark > 0) {
					mark = -1;
				} else {
					mark = cur;
				}
				preType = TYPE_MARK;
			} else if (input[cur] == SLASH) {
				if (mark > 0)
					continue;
				if (preType == TYPE_STAR) {
					input = del(input, token, cur);
					cur = token - 1;
					preType = 0;
				} else if (preType == TYPE_SLASH) {
					token = cur - 1;
					preType = TYPE_DSLASH;
				} else {
					preType = TYPE_SLASH;
				}
			} else if (input[cur] == BACKSLASH) {
				preType = TYPE_BACKSLASH;
			} else if (input[cur] == STAR) {
				if (mark > 0)
					continue;
				if (preType == TYPE_SLASH) {
					token = cur - 1;
				}
				preType = TYPE_STAR;
			} else if (input[cur] == NEWLINE) {
				if (preType == TYPE_DSLASH) {
					input = del(input, token, cur - 1);
					cur = token - 1;
					preType = 0;
				}
			}

		}
		return new String(input);
	}

	public static char[] del(char[] _target, int _start, int _end) {
		char[] tmp = new char[_target.length - (_end - _start + 1)];
		System.arraycopy(_target, 0, tmp, 0, _start);
		System.arraycopy(_target, _end + 1, tmp, _start, _target.length - _end
				- 1);
		return tmp;
	}

	public static void main(String[] args) {
		try {
			System.setIn(new FileInputStream("/Users/litong/Desktop/a.in"));
			System.setOut(new PrintStream("/Users/litong/Desktop/a.out"));
			Scanner sc = new Scanner(System.in);
			StringBuilder sb = new StringBuilder();
			while (sc.hasNext()) {
				sb.append(sc.nextLine());
			}
			System.out.println(removeComment(sb.toString()));
		} catch (Exception e) {

		}
	}

}

 

0
3
分享到:
评论

相关推荐

    C/C++/Java 源代码注释清除工具

    标题中的"C/C++/Java 源代码注释清除工具"是一个专门针对这三种编程语言设计的实用程序,它的主要功能是移除源代码文件中的注释。在软件开发过程中,注释对于理解和维护代码至关重要,但在特定情况下,如代码混淆、...

    c++与java的比较

    7. **字符串和字符处理**:Java的字符类型使用Unicode编码,能够自然支持多种语言的字符集,而字符串自动转换为String对象,消除了C/C++中常见的字符串处理陷阱。 8. **位操作**:Java引入了一个额外的无符号右移位...

    删除源程序中的注释

    例如,Python有uncomment模块,Java和C++有Uncrustify等。这些工具能识别不同类型的注释(如单行、多行、文档注释)并自动移除。 3. 自动化脚本:通过编写脚本(如Python或Shell脚本),结合正则表达式匹配和替换...

    源码清除注释工具,移除特定文件工具

    例如,在C/C++中,单行注释以`//`开始,多行注释以`/* */`包裹;在Java中,单行注释同样以`//`开始,多行注释以`/* */`包裹,而文档注释则以`/** */`形式存在。源码清除注释工具能够识别这些特定的注释格式,并将...

    01_Java基础(Java概述、环境变量、注释、关键字、标识符、常量)_讲义.doc

    健壮性得益于Java消除了C/C++中的不稳定性,如指针和内存管理。跨平台性则依赖于Java虚拟机(JVM),实现了“一次编写,到处运行”的理念。 Java技术体系包括三个主要平台:Java SE(标准版)是基础,提供了核心API...

    代码评审检查表(c++/java)

    在C++和Java这两种广泛使用的编程语言中,代码评审的检查表通常会涵盖多个方面,包括但不限于语法规范、设计模式、异常处理、性能优化等。下面我们将详细探讨这些关键知识点。 1. **语法规范**: - C++/Java语法的...

    Android JNI 开发简单介绍

    Android JNI(Java Native Interface)是Android平台中用于Java和C/C++代码交互的桥梁,它允许开发者在Android应用中调用本地库,实现性能优化、使用已有的C/C++库或者利用硬件特性等功能。这篇博客文章《Android ...

    ZhuShi.rar_清除注释

    它可能支持多种编程语言,如Java、C++、Python等,通过解析源代码的语法结构,识别并移除注释部分。通常,这些工具会区分行内注释(如JavaScript的//)和块注释(如C++的/*...*/)。 4. **使用清除注释工具的注意...

    java视频学习总结

    Native方法是在Java中声明但未在Java中定义的方法,它们通常用于调用非Java语言(如C、C++或汇编语言)编写的代码。Java Native Interface(JNI)提供了Java代码与本地代码交互的能力,使得Java应用程序可以利用系统...

    JNI编程 常用函数 手册

    例如,`GetBooleanArrayElements()`用于获取Java boolean数组的原始C/C++指针,`GetIntField()`用于获取Java对象的int字段值,`SetFloatArrayRegion()`则用于设置Java浮点数组的一部分。 2. **字符串处理**: - ...

    Thinking in Java 中文第四版+习题答案

    附录C Java编程规则 附录D 性能 D.1 基本方法 D.2 寻找瓶颈 D.2.1 安插自己的测试代码 D.2.2 JDK性能评测 D.2.3 特殊工具 D.2.4 性能评测的技巧 D.3 提速方法 D.3.1 常规手段 D.3.2 依赖语言的方法 D.3.3 特殊情况 D...

    俄罗斯方块源代码加详细注释

    《俄罗斯方块源代码加详细注释》是一个非常适合初学者学习的游戏开发资源,它提供了完整的俄罗斯方块游戏的源代码,并且附带了详尽的注释,方便理解每个部分的功能和逻辑。在这个项目中,我们可以深入学习到游戏编程...

    asp.net某店POS积分管理系统-清除履历表、日志表、月购买额(源代码+论文).rar

    资源内容:项目全套源码+完整文档 ...后台框架代码:java/c/c++/php/VB/lun/Andorid/Python 开发环境:idea 数据库:MySql(建议用 5.7,8.0 有时候会有坑) 部署环境:Tomcat(建议用 7.x 或者 8.x b版本),maven 

    代码统计统计支持主流代码

    描述中提到的"可以统计代码C/C++ java等一系列语言",进一步明确了该工具对C、C++和Java的支持。这三种语言在软件开发领域中有着广泛的应用:C语言以其高效和低级特性常用于系统编程和嵌入式开发;C++是面向对象的...

    CoreJava学习笔记

    9. **高性能**:随着JIT(Just-In-Time)编译器技术的发展,Java程序的执行速度越来越接近于C/C++等传统认为的高性能语言。 10. **多线程**:Java提供内置的多线程支持,使开发者可以方便地开发并发程序。 **运行...

    java教程word版.rar

    - 可能涵盖了Java与其它语言的互操作性,如JNI(Java Native Interface),使得Java程序可以调用C/C++编写的原生库。 9. **附录C_Java编程规则.doc**: - 这部分可能是关于Java编程的最佳实践和编码规范,比如...

    java教程二第2章Java环境和工具.pdf

    - `javah`:生成Java头文件(.h),用于本地方法接口的C/C++源文件。 - `javadoc`:生成HTML文档的工具,可以从Java源代码中提取注释来创建文档。 - `javap`:反汇编器,用于查看`.class`文件中的字节码。 - `jdb`:...

    重构源代码C1-c++版本

    本项目"重构源代码C1-c++版本"是基于原书中的Java重构示例,转化为C++语言实现的实例。这为我们提供了一个机会,深入理解C++中的重构技巧和实践。 首先,我们需要理解重构的基本概念。重构是一种系统性的修改现有...

    Thinking in Java简体中文(全)

    附录C Java编程规则 附录D 性能 D.1 基本方法 D.2 寻找瓶颈 D.2.1 安插自己的测试代码 D.2.2 JDK性能评测[2] D.2.3 特殊工具 D.2.4 性能评测的技巧 D.3 提速方法 D.3.1 常规手段 D.3.2 依赖语言的方法 D.3.3 特殊...

    java联想(中文)

    附录C Java编程规则 附录D 性能 D.1 基本方法 D.2 寻找瓶颈 D.2.1 安插自己的测试代码 D.2.2 JDK性能评测[2] D.2.3 特殊工具 D.2.4 性能评测的技巧 D.3 提速方法 D.3.1 常规手段 D.3.2 依赖语言的方法 D.3.3 特殊...

Global site tag (gtag.js) - Google Analytics