2013-09-18 4 views
-1

Я создал этот код, чтобы украсить исходный код как соглашение о кодировании. Но я получил исключение. Он не дает какой-либо строки ошибки, и моя кодовая строка последней фигурной скобки сбрасывается. Как я могу исправить это с помощью этого кода.Хотите украсить исходный код. Но дает исключение

String tab = ""; 
    String code = "class Demo{public static void main(String[] args) {System.out.println(\"ABC\");if(\"A\".equals(\"A\")){return \"A\";}System.out.println(\"ABC\");}}"; 
    String outtext = code; 
    String repfrom = "{"; 
    String repto = "{\n"; 
    Pattern p = Pattern.compile(repfrom, Pattern.LITERAL); 
    Matcher m = p.matcher(outtext); 
    StringBuffer sb = new StringBuffer(); 
    while (m.find()) { 
     tab += "\t"; 
     m.appendReplacement(sb, repto + tab); 

    } 
    m.appendTail(sb); 
    String newtext = sb.toString().replace(";", ";\n" + tab + "\b"); 
    p = Pattern.compile("}", Pattern.LITERAL); 
    m = p.matcher(newtext); 

    repto = "}\n"; 
    sb = new StringBuffer(); 
    String back = ""; 
    String tab2 = tab; 

    while (m.find()) { 
     try { 
      tab2 = tab2.substring(0, tab2.length() - 2); 
     } catch (Exception e) { 
     } 

     back += "\b"; 
     m.appendReplacement(sb, tab2 + back + repto + tab + back); 
    } 
    System.out.println(sb.toString()); 

Мое исключение ...

java.lang.IllegalArgumentException: Contents must be presorted - added value 162 is less than preceding value 163 
at org.netbeans.core.output2.IntList.add(IntList.java:76) 
at org.netbeans.core.output2.AbstractLines.addTabAt(AbstractLines.java:1131) 
at org.netbeans.core.output2.OutWriter.doWrite(OutWriter.java:445) 
at org.netbeans.core.output2.OutWriter.write(OutWriter.java:499) 
at java.io.PrintWriter.write(PrintWriter.java:456) 
at java.io.PrintWriter.write(PrintWriter.java:473) 
at org.apache.tools.ant.module.bridge.impl.ForkedJavaOverride$Copier.maybeFlush(ForkedJavaOverride.java:350) 
at org.apache.tools.ant.module.bridge.impl.ForkedJavaOverride$Copier.access$000(ForkedJavaOverride.java:251) 
at org.apache.tools.ant.module.bridge.impl.ForkedJavaOverride$NbRedirector$NbOutputStreamHandler.stop(ForkedJavaOverride.java:203) 
at org.apache.tools.ant.taskdefs.Execute.execute(Execute.java:521) 
at org.apache.tools.ant.taskdefs.Java.fork(Java.java:791) 
at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:214) 
at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:135) 
at org.apache.tools.ant.taskdefs.Java.execute(Java.java:108) 
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291) 
at sun.reflect.GeneratedMethodAccessor116.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:601) 
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) 
at org.apache.tools.ant.Task.perform(Task.java:348) 
at org.apache.tools.ant.Target.execute(Target.java:392) 
at org.apache.tools.ant.Target.performTasks(Target.java:413) 
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399) 
at org.apache.tools.ant.Project.executeTarget(Project.java:1368) 
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41) 
at org.apache.tools.ant.Project.executeTargets(Project.java:1251) 
at org.apache.tools.ant.module.bridge.impl.BridgeImpl.run(BridgeImpl.java:283) 
at org.apache.tools.ant.module.run.TargetExecutor.run(TargetExecutor.java:541) 
at org.netbeans.core.execution.RunClassThread.run(RunClassThread.java:153) 

Java Результат: -1

Заранее спасибо

+3

Я не вижу ни одного класса, который мог бы быть написан вами в этом стеке. Что вы делаете, что создает его? –

+0

Я еще не нашел источник исключения, но в вашей строке кода вы пытаетесь вернуть строку из функции void, так что это сломается, если вы попытаетесь ее скомпилировать. Просто примечание. – jonhopkins

+0

Имя моего класса - SyntaxTester. Но это не упоминается в исключении. – JhonF

ответ

0

StackTrace содержит только код из NetBeans (где я предполагаю, что вы запускают это). В поисках этого исключения и показаний «netbeans» есть ряд открытых ошибок в отношении этого и netbeans - https://netbeans.org/bugzilla/show_bug.cgi?id=201450

Я бы попробовал другую IDE или скомпилировал ее в командной строке.

+0

Да. Он работает с другими IDE. Но результат неправильный. Когда я устанавливаю этот вывод на jSyntaxPane. Он показывает квадраты в некоторых местах. – JhonF

+0

Возможно, я недопонимаю, но если вы ошиблись в netbeans, насколько я вижу, он не разрешен, можете ли вы ожидать, что ваш собственный код будет запущен? –

Смежные вопросы