Java常見錯(cuò)誤列表:
找不到符號(hào)(symbol)
類X是public的,應(yīng)該被聲明在名為X.java的文件中
缺失類、接口或枚舉類型
缺失X
缺失標(biāo)識(shí)符
非法的表達(dá)式開頭
類型不兼容
非法的方法聲明;需要返回類型
數(shù)組越界(java.lang.ArrayIndexOutOfBoundsException)
字符越界(java.lang.StringIndexOutOfBoundsException)
類Y中的方法X參數(shù)不匹配
缺少return語句
精度損失
在解析時(shí)到達(dá)了文件結(jié)尾
執(zhí)行不到的語句
變量沒被初始化
當(dāng)你在代碼中引用一個(gè)沒有聲明的變量時(shí)一般會(huì)報(bào)這個(gè)錯(cuò)誤。考慮下面的例子:
| 12345678910 | public class Test { public static void main(String[] args) { int a = 3; int b = 4; int c = 20; average = (a + b + c)/5.0; System.out.PRintln(average); }} |
| 12345 | 1 error found:File: Test.java <hr>Error: Test.java:7: cannot find symbolsymbol : variable averagelocation: class Test |
在上面的例子中,變量average沒有被聲明——也就是說你需要告訴編譯器average的類型是什么,例如:
| 1 | double average = (a + b + c)/5.0; |
此外,當(dāng)你在代碼中引用一個(gè)方法但沒有在方法名后加上括號(hào)時(shí)也會(huì)報(bào)這個(gè)錯(cuò)誤,加上括號(hào)用以表明引用的是個(gè)函數(shù),即使當(dāng)函數(shù)沒有參數(shù)時(shí)也不能省略括號(hào)。例如:
| 123456789 | public class Test { public static void main(String[] args) { my_method; } public static void my_method() { System.out.println("Hello, world!"); }} |
| 12345 | 1 error found:File: Test.java <hr>Error: Test.java:7: cannot find symbolsymbol : variable my_methodlocation: class Test |
在上面的例子中,編譯器在main方法中查找名為my_method的變量,實(shí)際上,你是想調(diào)用一個(gè)叫做my_method的方法:
| 123456789 | public class Test { public static void main(String[] args) { my_method(); } public static void my_method() { System.out.println("Hello, world!"); }} |
第三種情況,如果你忘記導(dǎo)入你所使用的包時(shí)也會(huì)出現(xiàn)這個(gè)錯(cuò)誤。例如,考慮下面這個(gè)從用戶那里讀入一個(gè)整數(shù)的例子:
| 123456 | public class Test { public static void main(String[] args) { Scanner console = new Scanner(System.in); int n = console.nextInt(); }} |
| 123456789 | 2 errors found: File: Test.java <hr> Error: cannot find symbol symbol: class Scanner location: class Test File: Test.java <hr> Error: cannot find symbol symbol: class Scanner location: class Test |
這里的問題是程序必須導(dǎo)入java.util.Scanner(或者java.util.)。否則,編譯器不知道Scanner是什么類型。當(dāng)你在處理文件的輸入/輸出時(shí),如果忘記導(dǎo)入java.util.Arrays或者java.io.,也會(huì)遇到這個(gè)錯(cuò)誤。