Java Setter和getter不工作

Java Setter和getter不工作,java,string,setter,getter,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 Sc

这是我关于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;
    }
}
您可以使用以下方法:

public String setAirlineName()
{
    String Name = AirlineName;
    return Name;
}
这与实际的setter冲突,因为它们是相同的名称,但返回类型不同,因此编译器可能会出现错误,我认为这就是您所说的“不工作”的意思:

String-setAirlineName(void)
可能是
String-getAirlineName(void)
,您已经实现了它,正如基本getter的目的一样:

public String getAirlineName()
{
    return AirlineName;
}

另一个错误是,您正在使用不同的局部变量读取输入,而忽略了在
Scanner
对象之前声明(且未初始化)的变量。

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

System.out.print ("Airline Name: ");
name = scan.nextLine ();
data.setAirlineName (name);
请注意,第二行将nextLine()读入传递给setter的变量。

问题在于:

    String AirlineName = scan.nextLine ();
    data.setAirlineName (name);
您正在读取一个名称并将其放入
AirlineName
,然后使用不同的变量作为参数调用setter

事实上,您应该会得到一个编译错误,告诉您
name
未初始化

您还有第二个(伪造的)setAirlineName方法,如下所示:

public String setAirlineName()
{
    String Name = AirlineName;
    return Name;
}
。。。这不是一个合适的二传手。但是您的
main
方法似乎没有调用它,所以这不是问题的原因。(您正在调用
setAttributeName(字符串)
重载…)


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

您正在读取变量
AirlineName
,但将另一个未初始化的变量
名称
传递给设置器:

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

其他3个变量的情况也一样,
FlightNumber
Origin
Destination

请更详细地定义“not working:”)它有无数不同的含义。请注意,所有单独的部分都是这样。这是我的第二个[家庭作业]答案,然而,我认为更直接一点是很好的,但可以通过解释发生了什么来补偿,因为相互冲突的方法签名可能很难追踪。
String AirlineName = scan.nextLine ();
data.setAirlineName (name);
                     ^^^^