2016-04-21 139 views
-4

當我運行下面的代碼我收到錯誤 - 異常在線程「主要」 java.lang.Error的:未解決的問題,編譯:Java錯誤:無法解析編譯

at homework6.main(homework6.java:6) 

我研究爲什麼這可能發生,以前的答案曾經說過需要匹配java文件名的類名,我的類也和.java文件匹配。我也嘗試完全刪除「void」和整個語句,但後來發生了一個新的錯誤,說我需要public void main(String [] args)。我遇到了不同的問題,然後是類和.java?

public class homework6 { 

    public static void main(String[] args) { 

     class Date { 
      private int month; 
      private int day; 
      private int year; 
      private String name; 

      public Date() { 

      } 

      { 
       month=1; 
       day = 1; 
       year = 2001; 
       name = "January"; 
      } 

      public Date(int m, int d, int y) { 
       setDate(m, d, y); 
      } 

      public void setDate(int m, int d, int y) { 
       month = m; 
       day = d; 
       year = y; 

       if (m ==1) 
        name="January"; 
       else if(m == 2) 
        name="February"; 
       else if(m == 3) 
        name="March"; 
       else if(m == 4) 
        name="April"; 
       else if(m == 5) 
        name = "May"; 
       else if(m == 6) 
        name = "June"; 
       else if(m == 7) 
        name = "July"; 
       else if(m == 8) 
        name = "August"; 
       else if(m == 9) 
        name = "September"; 
       else if(m == 10) 
        name = "October"; 
       else if(m == 11) 
        name="November"; 
       else if(m == 12) 
        name = "December"; 
      } 

      public void showDate1() { 
       System.out.println(month + "/" + day + "/" + year); 
      } 

      public void showDate2() { 
       System.out.println(name + "" + day + "," + year); 
      } 

      public void showDate3() { 
       System.out.println(day + "" + name + "" + year); 
      } 

     } 
    } 
} 
+0

你不能在一個函數內部有一個類。相反,把它放在你的功能之外。 – Majora320

+0

我只是將你的代碼複製到一個名爲'homework6.java'的文件中 - 具有精確的大寫字母 - 並且編譯得很好。它也沒有錯誤地運行,儘管它沒有任何東西,因爲你的main()方法所做的唯一事情就是聲明一個類(不是實例化它,更不用說調用它的任何方法)。 – yshavit

回答

0

你嵌套類,Date,在方法中,主要的方法是精確的 - 這是你不能和不應該做。

解決方法:不要這樣做。

創建一個名爲Date.java的文件並將Date類代碼放入其中。
創建一個名爲Homework6.java的第二個文件,並在其中放置主要方法。

完成。

+0

這是錯誤的 - 你可以在方法中嵌套一個類。我剛剛檢查了一下,並在1.8版本上進行了驗證,儘管我幾乎可以肯定它在1.7版本中也是如此,並且誰早早知道。 – yshavit

0

驗證答案中的答案。你也可以把這個類放在main之外並讓它編譯。

如果你退後一步,並假設你得到這段代碼進行編譯,預期的輸出是什麼?你似乎沒有打電話給任何方法。你想花一點時間理解你的邏輯嗎?

+0

你會如何建議我把課程放在主體之外?我是否包含課程日期到「name =」January?「? –

0

的大概是因爲這樣:

public Date() { 

} 

{ 
    month=1; 
    day = 1; 
    year = 2001; 
    name = "January"; 
} 

前兩個括號應該被去除,因爲第二兩者之間的代碼不是在的方法。所以它應該是這樣的:

public Date() { 
    month=1; 
    day = 1; 
    year = 2001; 
    name = "January"; 
} 
相關問題