Я должен удалить все комментарии в файле. Разделители комментариев в кавычках должны рассматриваться как текст и должны выводиться на экран. Цитаты внутри комментариев рассматриваются как другие комментарии и должны быть удалены.
У меня проблема со следующим оператором switch, когда дело доходит до одинарных кавычек, это выдает мне ошибку.
Я знаю, что это за ошибка, но я просто не знаю, как ее исправить.
import java.io.*;
public class Q3{
public static final int STATE_NORMAL = 0;
public static final int STATE_QUOTE_SINGLE = 1; // this:''
public static final int STATE_QUOTE_DOUBLE = 5; // this: ""
public static final int STATE_SLASH = 2; // this: /
public static final int STATE_SLASH_STAR = 3; // this: /* *
public static final int STATE_COMMENT = 4; // this: /* */ || /* only
public static void main(String[] argv) throws IOException{
final int EOF = -1;
InputStreamReader in = new InputStreamReader(System.in);
int c;
char[] buffer = new char[2];
int currState = Q3.STATE_NORMAL;
char outChar;
while((c = in.read()) != EOF){
outChar = (char) c;
switch (outChar){
case '/' :
/* if(currState == Q3.STATE_QUOTES)
currState ==Q3.STATE_QUOTES; */
if(currState == Q3.STATE_NORMAL)
currState = Q3.STATE_SLASH;
else if(currState == Q3.STATE_COMMENT)
currState = Q3.STATE_NORMAL;
break;
case '*':
if(currState == Q3.STATE_SLASH)
currState = Q3.STATE_COMMENT;
break;
case '"':
if(currState == Q3.STATE_NORMAL)
currState = Q3.STATE_QUOTE_DOUBLE;
if(currState == Q3.STATE_QUOTE_DOUBLE)
currState = Q3.STATE_NORMAL;
break;
*case ''':
if(currState == Q3.STATE_NORMAL)
currState = Q3.STATE_QUOTE_SINGLE;
if(currState == Q3.STATE_QUOTE_SINGLE)
currState = Q3.STATE_NORMAL;
break;*
}
if(currState != Q3.STATE_COMMENT)
System.out.print(outChar);
}
}
}