我有一个java代码来编程另一个java代码。 代码对于简单的java代码工作正常。但是当我在输入java代码中引入commnent(作为字符串代码输入)时,在下面的行中textEdit返回null,这将在后续步骤中导致nullpointerexception。
TextEdit textEdit = codeFormatter.format(CodeFormatter.K_UNKNOWN , code, 0, code.length(), 0, null);
import org.eclipse.jdt.core.ToolFactory;
import org.eclipse.jdt.core.formatter.CodeFormatter;
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.Document;
import org.eclipse.jface.text.IDocument;
import org.eclipse.text.edits.MalformedTreeException;
import org.eclipse.text.edits.TextEdit;
public class FormatCode {
public static void main(String[] args) {
String code = "public class TestFormatter{public static void main(String[] args){for(i=0;i<10;i++){i=i+2;\\abc"+"}System.out.println(\"Hello World\");}}";
CodeFormatter codeFormatter = ToolFactory.createCodeFormatter(null);
TextEdit textEdit = codeFormatter.format(CodeFormatter.K_UNKNOWN , code, 0, code.length(), 0, null);
IDocument doc = new Document(code);
try {
textEdit.apply(doc);
System.out.println(doc.get());
} catch (MalformedTreeException e) {
e.printStackTrace();
} catch (BadLocationException e) {
e.printStackTrace();
}
}
}
任何解决此问题的提示。
答案 0 :(得分:1)
在新行中使用评论。
//
评论正在一行中使用,因此您的代码就是这样。
换句话说,要解决此问题,请改为创建/*
条评论。
答案 1 :(得分:1)
此部分{i=i+2;\\abc"
应为{i=i+2;//abc\n"
您需要使用//进行评论而不是\还要在评论后创建换行符,否则其余代码将位于同一行并且评论说。
答案 2 :(得分:0)
基本上,您从null
获得codeFormatter.format
,因为正如文档所说:
如果无法格式化给定字符串,则返回null。
由于您的程序无法正确解析(由于注释问题),因此也无法格式化。如果有可能处理的文本不正确且可格式化,您应该从null
检查返回的format()
。