2010-10-15 96 views
0

這是我關於安裝員和吸氣劑的任務,並且由於某種原因它不工作。 任何人都可以檢查我的問題是什麼? 謝謝。安裝員和吸氣劑不工作

public class FlightTest 
{ 
    public static void main (String [] args) 
    { 

     String name; 
     String number; 
     String Orig; 
     String Desti; 

     Scanner scan = new Scanner (System.in); 

     Flight data = new Flight(); 

     System.out.print ("Airline Name: "); 
     String AirlineName = scan.nextLine(); 
     data.setAirlineName (name); 

     System.out.print ("Flight Number: "); 
     String FlightNumber = scan.nextLine(); 
     data.setFlightNumber (number); 

     System.out.print ("Origin: "); 
     String Origin = scan.nextLine(); 
     data.setOrigin (Orig); 

     System.out.print ("Destination: "); 
     String Destination = scan.nextLine(); 
     data.setDestination (Desti); 

     System.out.println (data); 
    } 
} 





public class Flight 

{ 

    private String AirlineName; 

    private String FlightNumber; 

    private String Origin; 

    private String Destination; 

    public String setAirlineName() 
    { 
     String Name = AirlineName; 
     return Name; 
    } 

    public Flight() 
    { 
     AirlineName = ""; 
     FlightNumber = ""; 
     Origin = ""; 
     Destination = ""; 
    } 

    public String getAirlineName() 
    { 
     return AirlineName; 
    } 

    public void setAirlineName (String name) 
    { 
     AirlineName = name; 
    } 

    public String getFlightNumber() 
    { 
     return FlightNumber; 
    } 

    public void setFlightNumber (String number) 
    { 
     FlightNumber = number; 
    } 

    public String getOrigin() 
    { 
     return Origin; 
    } 

    public void setOrigin (String Orig) 
    { 
     Origin = Orig; 
    } 

    public String getDestination() 
    { 
     return Destination; 
    } 

    public void setDestination (String Desti) 
    { 
     Destination = Desti; 
    } 

    public String toString() 
    { 
     String result = AirlineName + " flight number " + FlightNumber + " leaves from " + Origin + " to " + Destination + "."; 
     return result; 
    } 
} 
+3

請更詳細地定義「不工作」:)它有無窮的不同含義。 – BalusC 2010-10-15 03:45:28

回答

2

看起來您正在讀取Scanner newLine()調用新變量,然後傳入尚未初始化的變量。例如,我想你想是這樣的:

System.out.print ("Airline Name: "); 
name = scan.nextLine(); 
data.setAirlineName (name); 

注意,第二行讀nextLine()爲您傳遞到二傳手變量。

+1

請注意,這是所有單個部分的方式。 – MikeTheReader 2010-10-15 03:51:49

1

你有這樣的方法:

public String setAirlineName() 
{ 
    String Name = AirlineName; 
    return Name; 
} 

與您的實際制定者,因爲他們是相同的名稱,但不同的返回類型的衝突,因此編譯器可能會隨地吐痰的錯誤,我以爲是你的意思是「不工作」:

public void setAirlineName (String name) 
{ 
    AirlineName = name; 
} 

String setAirlineName(void)大概意思是String getAirlineName(void),你已經剛剛實現爲淺IC吸氣旨在:

public String getAirlineName() 
{ 
    return AirlineName; 
} 

由於Dante617 has answered,另一個錯誤是,你使用不同的局部變量來讀取輸入,而忽略你的Scanner對象之前,您聲明(和未初始化)中的那些。

+0

這是我的第二個[家庭作業]答案,但我認爲直接更好,但通過提供解釋發生的事情來補償是完全正確的,因爲相互衝突的方法簽名可能難以追查。 – BoltClock 2010-10-15 03:59:00

3

這裏的問題:

String AirlineName = scan.nextLine(); 
    data.setAirlineName (name); 

您正在閱讀的名稱,並把它變成AirlineName,然後調用帶有不同變量作爲參數的制定者。

事實上,你應該得到一個編譯錯誤,告訴你name未被初始化。

你也有一個第二(假的)setAirlineName方法如下:

public String setAirlineName() 
{ 
    String Name = AirlineName; 
    return Name; 
} 

...這是不正確的制定者。但它看起來像main方法不會調用它,所以這不是你的問題的原因。 (您正在呼叫setAttributeName(String)過載...)

最後,請,請,請學習遵循標準的Java風格約定標識符。變量或屬性名稱應以而不是開頭,並以大寫字母開頭。將您的AirlineName屬性和變量更改爲airlineName,依此類推。

1

您正在閱讀的變量AirlineName但通過不同的未初始化變量name二傳手:

String AirlineName = scan.nextLine(); 
data.setAirlineName (name); 
        ^^^^ 

同樣是與其他3個變量FlightNumberOriginDestination的情況。