2010-09-23 81 views
0

這裏是我更新的代碼:Java應用程序不顯示輸出

package car1; 

公共類主要{

公共靜態無效的主要(字串[] args){

類本田思域實現CAR 1 {

int speed = 0; 
int rpm = 0; 
int gear = 1; 

public void speedUp(int Increment) { 
    speed = speed + Increment;} 

public void applyBrakes(int Decrement) { 
    speed = speed - Decrement;} 

public void changeRpm(int NewValue) { 
    rpm = NewValue;} 

public void changeGear(int NewValue) { 
    gear = NewValue;} 

public void printStates() { 
    System.out.println("speed:"+speed+" rpm:"+rpm+" gear:"+gear);} 

}

class CarDemo{ 
public void main(String[] args) { 
    // Two different Cars 
    HondaCivic car1 = new HondaCivic(); 
    HondaCivic car2 = new HondaCivic(); 
    // Methods for cars 
    car1.speedUp(30); 
    car1.changeGear(3); 
    car1.changeRpm(3000); 
    car1.applyBrakes(15); 
    car1.printStates(); 

    car2.speedUp(30); 
    car2.changeGear(3); 
    car2.changeRpm(2000); 
    car2.applyBrakes(15); 
    car2.speedUp(5); 
    car2.changeGear(1); 
    car2.printStates(); 
} 

} } }

應用程序將不顯示該輸出。我不知道該怎麼做。有什麼建議?

回答

3

與大多數編程語言一樣,Java區分大小寫。 Classclass不一樣。

+0

我補充說,仍然有兩個錯誤:解析時達到文件結束}和編譯失敗;詳細信息請參閱編譯器錯誤輸出。 BUILD FAILED(總時間:0秒) – Arcadia 2010-09-23 17:00:41

+0

看起來像'CarDemo'類末尾的'}'字符。這就是爲什麼你應該採用一致的縮進樣式,而不是上面使用的偶然縮進樣式。如果你正確地縮進了'main',那麼這個類就顯而易見了。 – 2010-09-23 17:04:31

+0

我的代碼已更新 – Arcadia 2010-09-23 17:32:05

0

我能發現幾個問題,其中一些你可能已經固定的:

  1. Class需求是class(小寫)在第二類的定義。
  2. Car不是一個接口,所以你必須extend它而不是實現它。
  3. HondaCivic不是抽象的或接口,所以它必須有它的每個方法的方法體;或者,將方法留在HondaCivic之外,在這種情況下,將使用Car的方法。

在當前類的佈局,它將使更多的意義,如果作出了本田思域的對象,而不是一類,因爲它沒有新的功能:

Car hondaCivic = new Car(); 
1

Java是區分大小寫的:

Class HondaCivic implements Car { 

是不一樣的法律語法:

class HondaCivic implements Car { 
+0

修復並仍然有兩個錯誤:解析時到達文件結束}和編譯失敗;詳細信息請參閱編譯器錯誤輸出。 BUILD FAILED(總時間:0秒) – Arcadia 2010-09-23 16:58:04

1

一個接口需要從其父實現所有的方法。您正在實施除

printStates() 

此外,請檢查您的類聲明的大小寫敏感性。

編輯:nvm其未聲明爲摘要

+0

我補充說,仍然有兩個錯誤:到達文件結尾時解析 }和編譯失敗;詳細信息請參閱編譯器錯誤輸出。 BUILD FAILED(總時間:0秒) – Arcadia 2010-09-23 16:56:53

+0

你可以發佈你的更新代碼嗎? – Scott 2010-09-23 16:58:33

+0

是的,代碼更新與新錯誤即時 – Arcadia 2010-09-23 17:32:28

0

您的代碼有很多問題。

首先讓汽車像interface Car

二把所有的代碼從HondaCivicCar和所有的代碼CarHondaCivic即一個接口,交換代碼,因爲接口只能有方法的聲明和變量,而不是落實。實現接口的類需要提供所有這些方法的實現。

最後在main方法寫的,而不是你有什麼製作

Car car1 = new HondaCivic(); 
Car car2 = new HondaCivic(); 

然後,它會編譯和運行車的情況下,這種代碼。

+0

我編輯我的第一篇文章。我試圖做你說的話,但我無法真正理解它。我的代碼不需要HondaCivic來運行,我只是把它放在那裏,因爲我認爲我必須在界面或其他東西中實現它。 – Arcadia 2010-09-23 18:18:27

+1

一個類應該有它所有方法的方法體。如果你沒有方法體,那麼你將不得不聲明這個方法是抽象的,因此也聲明這個類也是抽象的。你也不能創建抽象類的對象。所以如果你所要做的只是創建一個類並創建它的對象並調用它的某些方法,那麼你就不必聲明任何接口。只要創建一個類,確保所有的方法都有它們的主體,然後你的代碼就可以正常工作。 – 2010-09-23 18:28:02

+0

好吧,我終於得到了編譯的代碼,沒有錯誤。其中一個主要問題是在方法之前沒有增加公開。我忘了你不能編譯不公開的接口方法。但是,當我去運行該應用程序它說:java.lang.NoClassDefFoundError:car/Main導致:java.lang.ClassNotFoundException:car.Main無法找到主類:car.Main。程序將會退出。 線程「main」中的異常Java結果:1 BUILD SUCCESSFUL(總時間:0秒)爲什麼這麼說? – Arcadia 2010-09-23 18:32:08