2010-10-15 89 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的情况。