2013-01-01 72 views
0

喜的朋友在編譯下面的錯誤來了錯誤:「的.class'預計

錯誤:」的.class'預計

我不是能找到什麼錯誤。我查了很多網站,但無法找到爲什麼會出現這個錯誤。 Plz幫助

在此先感謝。

import java.io.*; 

class Test 
{ 
    boolean isGoodEmployee(boolean ismarried,int noofchild,String middlename,String childnames[]) 
    { 
     boolean child,letter,last,child; 

     if (noofchild <= 2) 
      child=true; 
     boolean firstletter = middlename.startsWith("k"); 
     boolean lastletter = middlename.endssWith("e"); 

     if (firstletter && (!lastletter)) 
      letter = true; 

     int lastnameletterscount = lastname.length(); 

     if (lastnameletterscount > 4) 
      last = true; 

     String name = raju; 

     for (int i=0; i < noofchild; i++) 
      if(name.equalsIgnoreCase(childnames[i])) 
      { 
       child = true; 
       break; 
      } 
    } 
} 


class GoodEmployee 
{ 
    public static void main(String args[]) throws IOException 
    { 
     String firstname, middlename, lastname; 
     BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
     System.out.println("enter the first name of employee"); 
     firstname = br.readLine(); 
     System.out.println("enter the middle name of employee"); 
     middlename = br.readLine(); 
     System.out.println("enter the last name of employee"); 
     lastname = br.readLine(); 
     //System.out.println("full name of employee is:"+first+middle+last); 
     System.out.println("enter employee is married or not"); 
     boolean ismarried = Boolean.parseBoolean(br.readLine()); 

     if (ismarried) 
      System.out.println("enter number of childrens"); 

     int noofchild = Integer.parseInt(br.readLine()); 
     String childnames[] = new String[noofchild]; 
     System.out.println("enter children names"); 

     for (int i=0; i < noofchild; i++) 
      childnames[i] = br.readLine(); 
     Test t = new Test(); 
     t.isGoodEmployee(ismarried,noofchild,middlename,childnames[]); 
    } 
} 

我使用「的javac GoodEmployee.java」編譯程序

+2

請縮進你的代碼,這是非常難以閱讀! –

+0

請輸出完整錯誤 – fge

+1

請在您的問題中包含您用於編譯文件的確切命令。你不是用'java'代替'javac'來編譯,對吧? – thkala

回答

1

有很多不對的代碼:
您在isGoodEmployee()(1號線)
聲明布爾孩子的兩倍 endssWith應該是endsWith()
等等,但它們不是你說的問題。你用什麼命令行編譯這個類?

4

您在isGoodEmployee中調用了不匹配的方法。

childnames參數被定義爲一個陣列,這樣就可以簡單地在參數中傳遞,替換:

t.isGoodEmployee(ismarried,noofchild,middlename,childnames[]); 

t.isGoodEmployee(ismarried,noofchild,middlename,childnames); 

除了,不要忽略其他的編譯器的錯誤,例如as

middlename.endssWith("e"); 
       ^---------extra 's' 

熟悉javadocs

0

@Reimeus釘了它。

奇怪的編譯錯誤可以解釋如下。在這條線:

t.isGoodEmployee(ismarried,noofchild,middlename,childnames[]); 

childnames[]短語應該是一個Java表達式。但事實上,這個語法最類似於一個類型......實際上是一個名爲childnames的類(不存在)的一個數組。 Java編譯器的語法錯誤恢復代碼已經決定,如果它在類型名稱(即childnames[].class)之後插入.class,它將提供語法上有效的表達式。

當然,編譯器提出的修正是無意義的......至少因爲在您的應用程序中不會有名爲childnames的類或接口。


這個故事的寓意是不尋常的語法錯誤,有時會導致一個編譯器產生奇特的錯誤信息,只有明智的,如果你能弄清楚如何解析器會解析錯誤輸入。

0

如果您使用IDE,請使用公共主方法公開該類。 如果您試圖使用命令窗口運行它,我認爲編譯時不需要「.class」文件,而是需要執行。因此,在通過輸入javac GoodEmployee獲得.class文件並且沒有錯誤之後,請輸入Java GoodEmployee,它將執行您擁有的.class文件。