从源代码文件的代码中删除注释并打印代码(文件中没有注释) 例如,考虑下面的文本: import java.util.*; public class Program { public static void main(String[] args) { System.out.println("Hello, world!"); } public static void foo() { System.out.println("Goodbye!"); } }
如果文件包含此文本,程序应输出以下文本:从源代码文件的代码中删除注释并打印代码(文件中没有注释) 例如,考虑下面的文本: import java.util.*; public class Program { public static void main(String[] args) { System.out.println("Hello, world!"); } public static void foo() { System.out.println("Goodbye!"); } },java,Java,如果文件包含此文本,程序应输出以下文本: import java.util.*; public class Program { public static void main(String[] args) { System.out.println("Hello, world!"); } public static void foo() { System.out.println("Goodbye!"); } } 我为它编写了代码,并命名了一个
import java.util.*;
public class Program {
public static void main(String[] args) {
System.out.println("Hello, world!");
}
public static void foo() {
System.out.println("Goodbye!");
}
}
我为它编写了代码,并命名了一个名为stripComments的函数,它接受相关文件的扫描输入:
然而,产生的输出是:
import java.util.*;
就这样
有人能指出我哪里出错了吗?一旦您将flag设置为true,您将在第二秒内消耗整个输入
while(input.hasNextLine()){
//...
}
街区
另外,一旦你修正了这个问题:一旦你设置了这个标志,你就再也不会取消它的设置了在你的代码中你找不到一个标志着多行注释结束的*/。因此,一旦注释在第2行开始,它就永远不会结束
此外,对于这个特定任务,我建议每次查看输入的一个字符,而不是一次查看一个扫描器标记。再加上一个简单的,这可能会导致一个简单而健壮的实现。您应该在整个文件内容上为/**/和//使用两个常规表达式,而不是逐行工作。我知道我没有解决\\约束,但我可以处理:
while(input.hasNextLine()){
//...
}