塞特和吸气器不工作

时间:2010-10-15 03:44:11

标签: java string setter getter

这是我关于setter和getter的任务,但由于某种原因它无法运行。 任何人都可以检查问题对我来说是什么? 谢谢。

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;
    }
}

4 个答案:

答案 0 :(得分:3)

问题在于:

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

您正在阅读一个名称并将其放入AirlineName,然后使用不同的变量作为参数调用setter。

实际上,您应该收到编译错误,告诉您name未初始化。

您还有第二个(虚假)setAirlineName方法,如下所示:

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

...这不是一个合适的制定者。但看起来你的main方法并没有调用它,所以这不是你问题的原因。 (您正在调用setAttributeName(String)重载...)

最后,请,请学习遵循标识符的标准Java样式约定。变量或属性名称应以大写字母开头。将您的AirlineName属性和变量更改为airlineName,依此类推。

答案 1 :(得分:2)

看起来您正在将Scanner newLine()调用读入新变量,然后传入尚未初始化的变量。例如,我认为你想要这样的东西:

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

请注意,第二行将nextLine()读入您传递给setter的变量中。

答案 2 :(得分:1)

你有这个方法:

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

哪个与你的实际setter有冲突,因为它们的名称相同但返回类型不同,因此编译器可能会出现吐出错误,我认为这是“不工作”的意思:

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

String setAirlineName(void)可能意味着String getAirlineName(void),您已经实现了,就像基本的getter一样:

public String getAirlineName()
{
    return AirlineName;
}

作为Dante617 has answered,另一个错误是你使用不同的局部变量来读取输入并忽略你在Scanner对象之前声明(并且没有初始化)的那些。

答案 3 :(得分:1)

您正在阅读变量AirlineName,但将另一个未初始化的变量name传递给setter:

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

其他3个变量FlightNumberOriginDestination也是如此。