Kudja
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Ну вот например я тут решение одной наваял - может кому интерестно будет, а может кто поинтересней предложит - т.к. я думаю можно и красивей как-нить --------------------------------------------------------------------------------------------------------- import java.io.*; /* * Created on 18.12.2005 */ /** * @author Kudja */ public class Main { static void print(String s) { System.out.println(s); } public static void main(String[] args) throws Exception { String Line; int temp, counter=0; int posCom = 0, posCom1 = 0, pos2Kavich = 0, posKavich = 0; int CountFig = 0, CountSquare = 0, CountOval = 0; boolean InComment = false; InputStream f1 = new FileInputStream("test.java"); InputStreamReader f2 = new InputStreamReader(f1); LineNumberReader Reader = new LineNumberReader(f2); while ((f1.available() != 0)|(Reader.ready())){ Line = " "+Reader.readLine()+" "; counter++; while ((InComment)&(Line.length() != 0)) { posCom1 = Line.indexOf("*/"); if (posCom1 != -1){ Line=Line.substring(posCom1+2); InComment=false; } else { Line = ""; } } posCom = 1; while ((posCom != 10000)|(posCom1 != 10000)|(posKavich != 10000)|(pos2Kavich != 10000)){ // print("in"); posCom = Line.indexOf("//"); posCom1 = Line.indexOf("/*"); posKavich = Line.indexOf("'"); pos2Kavich = Line.indexOf('"'); if (posCom == -1){ posCom = 10000; } if (posCom1 == -1){ posCom1 = 10000; } if (posKavich == -1){ posKavich = 10000; } if (pos2Kavich == -1){ pos2Kavich = 10000; } // print(" "+pos2Kavich+" "+posKavich+" "+posCom+" "+posCom1); if ((posCom < posCom1)&(posCom < posKavich)&(posCom < pos2Kavich)&(posCom != 10000)){ Line = Line.substring(0,posCom); } if ((posKavich < posCom)&(posKavich < posCom1)&(posKavich < pos2Kavich)&(posKavich != 10000)){ temp = Line.indexOf("'",posKavich+1); if (temp == -1) { temp = Line.length()-2; print("Error in line "+counter+" не хватает одинарной кавычки"); } if (temp > posKavich+2) { print("Error in line "+counter+" больше одного символа между одинарными кавычками"); } Line = Line.substring(0,posKavich)+Line.substring(temp+1); } if ((pos2Kavich < posCom)&(pos2Kavich < posCom1)&(pos2Kavich < posKavich)&(pos2Kavich != 10000)){ temp = Line.indexOf('"',pos2Kavich+1); if (temp == -1) { temp = Line.length()-2; print("Error in line "+counter+" не хватает двойной кавычки"); } Line = Line.substring(0,pos2Kavich)+Line.substring(temp+1); } if ((posCom1 < posCom)&(posCom1 < pos2Kavich)&(posCom1 < posKavich)&(posCom1 != 10000)){ temp = Line.indexOf("*/",posCom1+2); if (temp == -1) { InComment = true; Line = Line.substring(0,posCom1); } else { Line = Line.substring(0,posCom1)+Line.substring(temp+2); } } // print(" "+pos2Kavich+" "+posKavich+" "+posCom+" "+posCom1); //print(Line); } for (int i = 0; i < Line.length() ;i++){ if (Line.charAt(i)=='{') { CountFig++; } if (Line.charAt(i)=='}') { CountFig--; } if (Line.charAt(i)=='(') { CountOval++; } if (Line.charAt(i)==')') { CountOval--; } if (Line.charAt(i)=='[') { CountSquare++; } if (Line.charAt(i)==']') { CountSquare--; } } } if (CountFig != 0){ print("Error не хватает фигурных скобок ("+CountFig+")"); } if (CountOval != 0){ print("Error не хватает круглых скобок ("+CountOval+")"); } if (CountSquare != 0){ print("Error не хватает квадратных скобок ("+CountSquare+")"); } } }
не оверпость, если после тебя не отвечали. то используй кнопку редактировать. Большой код прячь в теге [more] посмотри как его использовать, если тема будет интересна другим, то прибью ее. | Всего записей: 12 | Зарегистр. 15-12-2005 | Отправлено: 01:19 19-12-2005 | Исправлено: ShIvADeSt, 06:13 19-12-2005 |
|