当我编译这段代码时,每件事都没问题
class TreeCutter {
public static void main ( String [] args ){
for( int i = 0 ; i < testCaseNum ; i ++ ){
TreeCutter TC = new TreeCutter( commandPrompt );
}
}
但是当我删除大括号并编译我的代码时
class TreeCutter {
public static void main ( String [] args ){
for( int i = 0 ; i < testCaseNum ; i ++ )
TreeCutter TC = new TreeCutter( commandPrompt );
}
}
我错了:
main.java:12: not a statement
TreeCutter TC = new TreeCutter( commandPrompt );
^
main.java:12: ';' expected
TreeCutter TC = new TreeCutter( commandPrompt );
^
2 errors
我想知道这段代码背后发生了什么。
答案 0 :(得分:2)
您错过了main(){...
答案 1 :(得分:2)
恕我直言,上面的代码将仍然无法编译,即使你为main方法添加了缺少的括号。为了使它编译你需要像这样做
没有FOR循环的支撑
class TreeCutter {
public static void main ( String [] args ){
TreeCutter TC ;
for( int i = 0 ; i < testCaseNum ; i ++ )
TC = new TreeCutter( commandPrompt );
}
}
使用Brace for FOR循环
class TreeCutter {
public static void main ( String [] args ){
for( int i = 0 ; i < testCaseNum ; i ++ ) {
TreeCutter TC = new TreeCutter( commandPrompt );
}
}
}
就GC而言,TC的范围仅适用于for循环。因此,直到你将TC传递出for循环,它将在下一次for循环运行的那一刻符合GC的条件
答案 2 :(得分:1)
缺少main()
方法的结束括号。
对于一行代码后的for loop
语句,如果您尝试创建对象并将其分配给变量,则不能省略大括号{}
,以下代码无法编译
for( int i = 0 ; i < testCaseNum ; i ++ )
TreeCutter TC = new TreeCutter( commandPrompt );
但可以这样编译;
TreeCutter tc;
for( int i = 0 ; i < testCaseNum ; i ++ )
tc = new TreeCutter( commandPrompt );
OR
for( int i = 0 ; i < testCaseNum ; i ++ )
new TreeCutter( commandPrompt );