2010-09-23 101 views
-4

可能重複:
Java application doesn't display output應用程序不顯示輸出

我學習Java開發的基礎知識,使我可以進入Android開發。在這個非常簡單的應用程序中,我遇到了一些問題。它應該給我一個汽車的速度,齒輪,轉速等輸出。我可以編譯應用程序沒有問題,但是當我運行它時,它不顯示輸出。問題是什麼?代碼如下:

package car1; 

public class Main { 



    public static void main(String[] args) { 

      class HondaCivic implements car1 { 

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

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

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

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

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

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


      class Car1{ 
       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(); 
       } 

      } 
     } 
    } 
} 
+1

重複後。編輯您的其他帖子,而不是在同一網站上發佈新主題。 - http://stackoverflow.com/questions/3780594/java-compile-errors-basic-application/3780623#3780623 – Scott 2010-09-23 19:06:38

+0

刪除android標籤,因爲它與這個問題沒有關係 – Falmarri 2010-09-23 20:51:55

回答

-1

你不能編譯。

HondaCivic類實現car1它不存在。它可能是Car1,但Car1是一類,應該擴展。

加上在你的main方法中聲明瞭兩個類並不是一個好主意。您無法從方法外訪問它們。

而最後你有兩個main(String...)方法。我想這就是所謂的Main.main(String...)。除了聲明兩個類之外,這個方法什麼也不做。

+0

編譯實際的作品。 – Arcadia 2010-09-23 19:17:19

+0

你是什麼意思它應該延長?我在另一個java文件中有Car1接口。我可以編譯,它說構建成功。 – Arcadia 2010-09-23 19:27:56

+0

嗯我的不好,我認爲'main()'中的'car1'類是你指向的接口。但仍然閱讀關於'main()'調用的最後部分。 – 2010-09-23 19:30:11

0

HondaCivic在這種情況下不應該是一個類,它應該是一個Car或Car的任何子類的一個實例。汽車類應該有汽車的製造,年份,型號等。現在,如果說HondaCivic有不同的行爲,那麼您可以添加任何有助於定義該信息的信息,例如max_speed,或者像汽車系統的狀態,如current_speed,制動器,齒輪等。

現在,如果您想進一步設計,您可以爲汽車的不同部分創建一個類,然後開始瞭解它如何很好地適用於面向對象的設計。

+0

謝謝,但我不想創建一個巨大的應用程序。我只是試圖獲取基礎知識,出於某種原因,此應用程序不會顯示printStates()的輸出。任何想法?代碼是很好的,我只是不能讓數字出現在輸出中。 – Arcadia 2010-09-23 19:41:44

+1

@Arcadia我同意法爾瑪利,請不要認爲我們要批評,但這是一個互相學習的好地方。簡單也意味着使其可以理解,並專注於使用正確的方法。如果您在開發時考慮到這一點,那麼當應用程序非常龐大時,您也可以做出更好的決策。 – mrjohn 2010-09-23 20:43:15

+0

我花了幾乎完全相同的代碼從本教程中找到:http://download.oracle.com/javase/tutorial/java/concepts/class.html在教程結束時,它告訴我讓我自己的應用程序基於關閉的那一課。這幾乎完全像他們發佈的代碼。即使我拿起他們的代碼並嘗試運行它,輸出也不會出現,但在他們聲稱它的教訓中。我應該如何實現我的代碼?它不應該在主要班級嗎? – Arcadia 2010-09-23 21:05:03

0

這是你的類應該是什麼樣子

HondaCivic.java


public class HondaCivic { 

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

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

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

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

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

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

Main.java


public class Main { 

    public static void main(String[] args) { 


    car1 = new HondaCivic(); 
    car2 = new HondaCivic(); 
    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(); 

    } 
}
+0

我很生氣的人。我花了一個多小時的時間在這麼簡單的大聲笑上。對於應該如何佈置和格式化,我只是沒有充分的理解。你的代碼工作,但我不得不添加包的課程。由於某種原因,課前公衆不需要。 – Arcadia 2010-09-23 21:49:08

+0

如果班級在同一個包中,則不需要公衆。默認修飾符是'protected',這意味着它可以從包中的任何類訪問。對於變量等也是如此。你應該找到一個很好的Java教程,因爲你顯然缺少很多基礎知識 – Falmarri 2010-09-23 22:07:58

+0

嗯,實際上我只是在2天前開始學習Java。 :P我正在閱讀Java網站上的Java教程。我幾乎沒有抓到表面。隨着我不斷前進,我相信我將能夠更好地理解這些概念。 – Arcadia 2010-09-23 23:24:02

1

你Main.main方法不包含任何實際可執行代碼。它只有一個嵌入式類定義,HondaCivic。看起來你的意圖是Car1.main方法內部的代碼應該在Main.main方法內部 - 這看起來像你真正想要運行的東西。 HondaCivic也沒有明顯的理由成爲嵌入類。清理起來,你基本上有Falmarri建議的。