黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

Java常見錯誤列表


Java常見錯誤列表:
        ·找不到符號(symbol)
        ·類X是public的,應該被聲明在名為X.java的文件中
        ·缺失類、接口或枚舉類型
        ·缺失X
        ·缺失標識符
        ·非法的表達式開頭
        ·類型不兼容
        ·非法的方法聲明;需要返回類型
        ·數組越界(java.lang.ArrayIndexOutOfBoundsException)
        ·字符越界(java.lang.StringIndexOutOfBoundsException)
        ·類Y中的方法X參數不匹配
        ·缺少return語句
        ·精度損失
        ·在解析時到達了文件結尾
        ·執行不到的語句

 ·變量沒被初始化

 1. 找不到符號(symbol)
        當你在代碼中引用一個沒有聲明的變量時一般會報這個錯誤。考慮下面的例子:
        01
        public class Test {
        02
            public static void main(String[] args) {
       03
                int a = 3;
        04
                int b = 4;
        05
               int c = 20;
        06
      
        07
                average = (a + b + c)/5.0;
        08
                System.out.println(average);
        09
            }
        10
        }

        1 error found:
        File: Test.java  


 

        Error: Test.java:7: cannot find
        symbol
        symbol  : variable average
        location: class Test

 

   在上面的例子中,變量average沒有被聲明——也就是說你需要告訴編譯器average的類型是什么,例如:

      1
        double average = (a +b + c)/5.0;
         此外,當你在代碼中引用一個方法但沒有在方法名后加上括號時也會報這個錯誤,加上括號用以表明引用的是個函數,即使當函數沒有參數時也不能省略括號。例如:
        1
        public class Test {
        2
            public static void main(String[] args) {
        3
                my_method;
        4
            }
        5
  
        6
            public static void my_method() {
         7
                System.out.println("Hello, world!");
        8
            }
        9
        }

        1 error found:
        File: Test.java  


 

      Error: Test.java:7: cannot find
        symbol
        symbol  : variable my_method
        location: class Test
        在上面的例子中,編譯器在main方法中查找名為my_method的變量,實際上,你是想調用一個叫做my_method的方法:
        1
        public class Test {
        2
                public static void main(String[] args) {
        3
                    my_method();
        4
                }
        5
  
        6
                public static void my_method() {
        7
                    System.out.println("Hello, world!");
        8
                }
        9
        }

        第三種情況,如果你忘記導入你所使用的包時也會出現這個錯誤。例如,考慮下面這個從用戶那里讀入一個整數的例子:
        1
        public class Test {    
        2
            public static void main(String[] args) {
        3
                Scanner console = new Scanner(System.in);
        4
                int n = console.nextInt();
        5
            }
        6
        }

        2 errors found:
             File:Test.java  

 


 

             Error: cannotfind
        symbol
               symbol:  class Scanner
               location:class Test
            File:Test.java  

 


 

             Error: cannotfind
        symbol
               symbol:  class Scanner
               location:class Test
        這里的問題是程序必須導入java.util.Scanner(或者java.util.)。否則,編譯器不知道Scanner是什么類型。當你在處理文件的輸入/輸出時,如果忘記導入java.util.Arrays或者java.io.,也會遇到這個錯誤。
        1
        import java.util.*; // or --> import java.util.Scanner;   
        2
        public class Test {    
        3
            public static void main(String[] args) {
        4
                Scanner console = new Scanner(System.in);
        5
                int n = console.nextInt();
        6
            }
        7
        }
        最后,當我們在使用大小敏感的變量名時也會遇到這個錯誤。Java中所有的標識符(identifiers)都是區分大小寫的。這就意味著,如果我們聲明了一個名為average的變量,然后在后面用Average引用它時,編譯器就會報找不到Average這個變量的錯誤。

        2. 類X是public的,應該被聲明在名為X.java的文件中
        在一個Java程序中,如果類名與文件名不匹配時會報這個錯。例如,下面這個Foo.java程序:
        1
        public class Bar {    
        2
             public static void main(String[] args) {
        3
                System.out.println("Hello, world!");
        4 
            }
        5
        }

        1 error found:
        File: Foo.java  

 


 

        Error: class Bar is public, should bedeclared in
        a file
        named Bar.java

        由于Foo與Bar不匹配,這段代碼會編譯失敗。修改這個錯誤,我們既可以修改類名,也可以修改文件名。
        3. 缺失類、接口或枚舉類型
        這個錯誤是一種與大括號有關的錯誤,一般來說,這個錯誤發生在程序最后有太多大括號時;例如:
        1
        public class Test {    
        2
            public static void main(String[] args) {
        3
                System.out.println("Hello!");
        4
            }
        5
        }
        6
        }


        1 error found:
         File: Test.java  

 


 

        Error: class, interface, or enumexpected
        一種找出這種錯誤的方式是正確的縮進代碼(因為這種錯誤總是與大括號有關)。我們可以在Dr.java中按組合鍵CTRL-A(去選中這個程序),然后按TAB鍵(來正確地縮減代碼)。在我們上面的實例代碼中,程序的最后有兩個大括號,這在一個合法的程序中是不可能出現的。因此,我們僅僅去掉一個大括號就能夠讓程序正確的編譯。
        1
        public class Test {    
        2
               public static void main(String[] args) {
        3
                   System.out.println("Hello!");
        4
               }
        5
           }

        4.缺失X
        當編譯器檢查到代碼中缺失字符時會出現”缺失X”這種形式的錯誤,錯誤信息會告訴你在哪行缺失了哪個字符,考慮下面的程序:

        1
        public class Test
        2
            public static void main(String[] args) {
        3
                my_method();
        4
            }
        5
  
        6
            public static void my_method() {
        7
                System.out.println("Hello, world!")    
        8
            }
        9
        }


        2 errors found:
        File: Test.java  

 


 

        Error: Test.java:1: '{'
        expected
        File:.java  

 


 

        Error: Test.java:7: ';'
        expected
        這個錯誤信息告訴你在第1行缺失了一個大括號,在第7行缺失了一個分號。解決這種錯誤很簡單——只需把缺失的字符在正確的位置上補上即可。
        1
        public class Test {
        2
               public static void main(String[] args) {
        3
                   my_method();
        4
               }
        5
     
        6
               public static void my_method() {
         7  
                   System.out.println("Hello, world!");  
         8
               }
         9
           }

        5.缺失標識符
        當把代碼寫在了方法外時會出現這個錯誤;這種錯誤一般也是由大括號引起的。考慮下面的例子:

      1
      public class Test {
      2
             System.out.println("Hello!");
      3
     
      4
             public static void main(String[] args) {
      5
                 System.out.println("World!");
      6
              }
      7
         }

      2 errors found:
      File: Test.java  

 


 

      Error:expected
      File: Test.java  

 


 

      Error: illegal start of type
        在這種情況下,很明顯第一個打印語句應該放在main方法里面,這樣才能通過編譯。然而,當我們的程序中有多于一個方法并且大括號也不匹配時,這種“缺失標識符”的錯誤就不容易被發現了:
      1
      public class Test {    
      2
              public static void main(String[] args) {
      3
                  System.out.println("Hello!");}
      4
                  System.out.println("World!");
      5
              }
      6
          }

      3 errors found:
      File: Test.java  

 


 

      Error:expected
      File: Test.java  

 


 

      Error: illegal start of type
      File: Test.java  

 


 

      Error: class, interface, or enumexpected 
        在上面的代碼中多了一個大括號,但是因為代碼沒有正確的縮進,所以很難找出這個錯誤。這樣使得main方法在打印“hello”語句后就結束了,這樣打印“world”的語句就變成方法以外的代碼了。修改這個錯誤的方式十分簡單——只需要把第三行的大括號刪除就可以了:
      1
      public class Test {    
      2
          public static void main(String[] args) {
      3
              System.out.println("Hello!");
      4
              System.out.println("World!");
      5
           }
      6
      }

        6.非法的表達式開頭
        當編譯器遇到一條不合法的語句時會報“非法的表達式開頭”這種錯誤。考慮下面的例子:

      1
      public class Test {
      2
          public static void main(String[] args) {
      3
              my_method();
      4
  
      5
  
      6
          public static void my_method() {
      7
              System.out.println("Hello, world!");
      8
          }
      9

        }
      5 errors found:
      File: Test.java  

 


 

      Error: Test.java:6: illegal start ofexpression
      File: Test.java  

 


 

      Error: Test.java:6: illegal start ofexpression
      File: Test.java  

 


 

      Error: Test.java:6: ';'
      expected
      File: Test.java  

 


 

      Error: Test.java:6: ';'
      expected
      File: Test.java  

 


 

      Error: Test.java:9: reached end of file
      while
      parsing


        這里,缺少了一個關閉main方法大括號。由于main方法沒有被關閉,編譯器把調用my_method方法之后的代碼也當作main方法的一部分。然而,后面的代碼是public static void my_method() {,很顯然,這在一個方法內不合法。
       “非法的表達式開頭”這種錯誤不如我們上面提到的“××缺失”這種信息有幫助。對于這種錯誤(以及很多其他一些錯誤),非常有必要檢查一下出錯代碼前面的那幾行。對于上面那個例子,我們只需要在編譯器報錯的那行前面加上大括號關閉main方法就可以了。重新編譯,所有的錯誤都解決了。
      1
      public class Test {
      2
          public static void main(String[] args) {
      3
              my_method();
      4
          }  
      5
  
      6
          public static void my_method() {
      7
              System.out.println("Hello, world!");
      8
          }
      9
      }

        7.類型不兼容
        當你的程序在處理類型相關的問題時會報這個錯。我們可以對一些類型進行相互轉化,例如,你可以輕松把一個char類型轉為int類型,反之亦然;你也可以通過向上轉型把一個double類型轉為int類型。但是,你不能把基本類型與像String這樣的對象進行相互轉換。例如:

      1
      public class Test {
      2
          public static void main(String[] args) {
      3
               int num = "Hello, world!";
      4
          }
      5
      }

      1 error found:
      File: Test.java  

 


 

      Error: Test.java:3: incompatible types
      found   : java.lang.String
      required: int
        一般來說,你不能像解決其他一些錯誤一樣解決這種錯誤。這不是一種語法錯誤,而是一種關于類型的邏輯錯誤。把一個String類型轉為int類型一般來說都是毫無意義。但是,在一些應用中,你可能需要把String類型轉為int類型,比如,當這個字符串代碼一個數字時:
      1
       public class Test {
      2
          public static void main(String[] args) {
      3
              int num = "500";
      4
          }
      5
      }

      1 error found:
      File: Test.java  

 


 

      Error: Test.java:3: incompatible types
      found   : java.lang.String
      required: int
        解決這種錯誤一般采用這樣的方法:借助于Java中像Integer這樣的類,這些基本類型的包裝類中有能接受字符串類型的參數的方法,這樣就把字符串類型轉為整型了:
      1
       public class Test {
      2
              public static void main(String[] args) {
      3
                  int num = Integer.parseInt("500");
      4
              }
      5
          }

        但是,這種解決“類型不兼容”錯誤的方案是一種例外,不是什么規則,因為這種錯誤一般來自于邏輯上的錯誤。

        8.非法的方法聲明;需要返回類型
        在Java中的每個方法都要求明確的聲明返回類型,即使這個方法什么也不返回,也要用void進行標識,就像main方法那樣。當一個方法沒有聲明返回類型時,會出現這種錯誤:
      01
      public class Test {
      02
              public static void main(String[] args) {
      03

 

上一篇:JDK、J2EE、J2SE、J2ME之間的區別
下一篇:JAVA程序員面試常見問題

開班信息

主站蜘蛛池模板: 黄视频网站入口 | 中文字幕在亚洲第一在线 | 日韩精品在线一区 | 亚洲天堂色视频 | 国产日韩视频 | 天天噜噜日日噜噜久久综合网 | 国产精品视频ccav | 免费看一级黄色大片 | 翁熄系列乱吃奶小玲 | 欧美亚洲一区二区三区导航 | 免费特黄级夫费生活片 | 91成人短视频 | 手机看一级片 | 久草福利视频 | 欧美日韩一区二区在线视频 | 国产丝袜第一页 | 视频一本大道香蕉久在线播放 | 一级a级国产不卡毛片 | 天天插伊人 | 亚洲一区免费在线 | 中国黄色一级视频 | 日韩亚洲欧美视频 | 精品400部自拍视频在线播放 | 深夜福利视频网 | 性爱免费视频 | 日韩欧美一区二区不卡看片 | 国产又色又爽又黄 | 夜夜爽夜夜叫夜夜高潮漏水 | 香蕉视频亚洲 | 无限资源日本好片 | 国产在线精品一区二区中文 | 午夜影院伦理片 | 成人网18免费网站在线 | 国产日产欧美 | 香蕉视频黄色 | 丁香婷婷激情五月 | 成人免费专区 | 色日本视频 | 毛片高清 | 日日摸夜夜欧美一区二区 | 欧美激情a∨在线视频播放 欧美激情二区 |