Я хочу извлечь однострочные и многострочные комментарии
он не может извлечь комментарии, как ниже
/*
это первая программа
*/
и это дает как
/*
*/
Что я уже пробовал:
package javaapplication5; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; import java.util.logging.Level; import java.util.logging.Logger; /** * BufferedReader and Scanner can be used to read line by line from any File or * console in Java. * This Java program demonstrate line by line reading using BufferedReader in Java * * @author Javin Paul */ public class BufferedReaderExample { public static void main(String args[]) throws IOException{ //reading file line by line in Java using BufferedReader FileInputStream fis = null; BufferedReader br = null; //String line; try { fis = new FileInputStream("E:/Sum.txt"); br = new BufferedReader(new InputStreamReader(fis)); String line; while((line = br.readLine()) != null){ if(line.contains("/*") || line.contains("*/")|| line.contains("//")){ System.out.println(line); } else System.out.println(""); } br.close(); } catch(IOException e){ System.out.println("file could not read"); } } }
[no name]
Да, это именно то, что вы сказали своей программе сделать. Какой у вас вопрос?
Richard MacCutchan
Если строка содержит "/*"
тогда это может быть многострочный комментарий, поэтому вам нужно проверить, содержит ли он также "*/"
, а если нет, то продолжайте смотреть на следующие строки.
Member 13175373
спасибо я думаю что вы правы но мой опыт программирования не так уж хорош
Richard MacCutchan
Речь идет о простой логике, а не о программировании. Если строка содержит "//"
тогда это однострочный комментарий, так что с ним легко иметь дело. Если строка содержит "/*"
тогда это начало единого или многострочный комментарий. Поэтому в этом случае вы выводите строку, а затем проверяете, содержит ли она "*/"
Если это так, то больше никакой обработки. Если это не так, то установите флаг, чтобы продолжать искать флаг конца комментария, и выводите каждую строку, пока не найдете ее.
Member 13175373
спасибо я попробую
PIEBALDconsult
Писать Парсеры не так-то просто. Вам нужно читать Символ за раз и отслеживать, с какими "особыми" символами вы сталкиваетесь - например, кавычками или любым другим экранирующим символом, используемым языком.
В качестве примера, что вы ожидаете, что произойдет с чем-то вроде этого:
mystring = " эта строка содержит комментарий \" / * oh elephant! * / в комментарии\", так что будьте осторожны." ;
PIEBALDconsult
Кроме того, обязательно прочтите спецификацию для языка, который вы анализируете, чтобы убедиться, что вы действительно знаете, что представляет собой комментарий. Например, распространяется ли" однострочный комментарий " просто на следующую новую строку? Или Терминатор оператора завершит его?
Однажды меня поймал язык, который позволяет:
это утверждение ; / / этот комментарий заканчивается на этой точке с запятой -->; Это новое утверждение ;
Member 13175373
спасибо за ваше руководство у меня не так много опыта написания кода если это возможно пожалуйста помогите в этом отношении