Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从源代码文件的代码中删除注释并打印代码(文件中没有注释) 例如,考虑下面的文本: 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 - Fatal编程技术网

从源代码文件的代码中删除注释并打印代码(文件中没有注释) 例如,考虑下面的文本: 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()){ 
  //...
}