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) { } } }
相关推荐
标题中的"C/C++/Java 源代码注释清除工具"是一个专门针对这三种编程语言设计的实用程序,它的主要功能是移除源代码文件中的注释。在软件开发过程中,注释对于理解和维护代码至关重要,但在特定情况下,如代码混淆、...
7. **字符串和字符处理**:Java的字符类型使用Unicode编码,能够自然支持多种语言的字符集,而字符串自动转换为String对象,消除了C/C++中常见的字符串处理陷阱。 8. **位操作**:Java引入了一个额外的无符号右移位...
例如,Python有uncomment模块,Java和C++有Uncrustify等。这些工具能识别不同类型的注释(如单行、多行、文档注释)并自动移除。 3. 自动化脚本:通过编写脚本(如Python或Shell脚本),结合正则表达式匹配和替换...
例如,在C/C++中,单行注释以`//`开始,多行注释以`/* */`包裹;在Java中,单行注释同样以`//`开始,多行注释以`/* */`包裹,而文档注释则以`/** */`形式存在。源码清除注释工具能够识别这些特定的注释格式,并将...
健壮性得益于Java消除了C/C++中的不稳定性,如指针和内存管理。跨平台性则依赖于Java虚拟机(JVM),实现了“一次编写,到处运行”的理念。 Java技术体系包括三个主要平台:Java SE(标准版)是基础,提供了核心API...
在C++和Java这两种广泛使用的编程语言中,代码评审的检查表通常会涵盖多个方面,包括但不限于语法规范、设计模式、异常处理、性能优化等。下面我们将详细探讨这些关键知识点。 1. **语法规范**: - C++/Java语法的...
Android JNI(Java Native Interface)是Android平台中用于Java和C/C++代码交互的桥梁,它允许开发者在Android应用中调用本地库,实现性能优化、使用已有的C/C++库或者利用硬件特性等功能。这篇博客文章《Android ...
它可能支持多种编程语言,如Java、C++、Python等,通过解析源代码的语法结构,识别并移除注释部分。通常,这些工具会区分行内注释(如JavaScript的//)和块注释(如C++的/*...*/)。 4. **使用清除注释工具的注意...
例如,`GetBooleanArrayElements()`用于获取Java boolean数组的原始C/C++指针,`GetIntField()`用于获取Java对象的int字段值,`SetFloatArrayRegion()`则用于设置Java浮点数组的一部分。 2. **字符串处理**: - ...
附录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...
《俄罗斯方块源代码加详细注释》是一个非常适合初学者学习的游戏开发资源,它提供了完整的俄罗斯方块游戏的源代码,并且附带了详尽的注释,方便理解每个部分的功能和逻辑。在这个项目中,我们可以深入学习到游戏编程...
资源内容:项目全套源码+完整文档 ...后台框架代码: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++是面向对象的...
9. **高性能**:随着JIT(Just-In-Time)编译器技术的发展,Java程序的执行速度越来越接近于C/C++等传统认为的高性能语言。 10. **多线程**:Java提供内置的多线程支持,使开发者可以方便地开发并发程序。 **运行...
- 可能涵盖了Java与其它语言的互操作性,如JNI(Java Native Interface),使得Java程序可以调用C/C++编写的原生库。 9. **附录C_Java编程规则.doc**: - 这部分可能是关于Java编程的最佳实践和编码规范,比如...
- `javah`:生成Java头文件(.h),用于本地方法接口的C/C++源文件。 - `javadoc`:生成HTML文档的工具,可以从Java源代码中提取注释来创建文档。 - `javap`:反汇编器,用于查看`.class`文件中的字节码。 - `jdb`:...
本项目"重构源代码C1-c++版本"是基于原书中的Java重构示例,转化为C++语言实现的实例。这为我们提供了一个机会,深入理解C++中的重构技巧和实践。 首先,我们需要理解重构的基本概念。重构是一种系统性的修改现有...
附录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 特殊...
附录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 特殊...