java - 将信息读入数组时的格式问题

标签 java arrays inheritance tostring

我目前正在使用继承,正如你在下面看到的,我有两个类,人和乘客。在 person 中,我有主要的 toString() 方法,在乘客中,我调用 super.toString() 并添加新信息、优先预订/noOfBags 和 ID。我遇到的问题是,当用户向数组添加新乘客时,当您打印数组时,数据的格式与输入的格式不同。我非常确定我已经正确调用了所有内容,但我不能 100% 确定为什么只是 toString 的名称方面会出现问题(请注意,DOB/ID/noOfBags 和优先预订的格式均正确)。如果有人能指出我为什么只是名字打印不正确,我将不胜感激。

代码 这是主类Person中的构造函数

public Person()
{
    name = new Name();
    dateOfBirth = new Date();

}

public Person(String titleIn, String firstNameIn, String surNameIn, int day, int month, int year)
{
    name = new Name(titleIn, firstNameIn, surNameIn);
    dateOfBirth = new Date(day, month, year);

}

这是我用来获取新乘客的姓名和出生日期详细信息的方法

public void read()
{
    try
    {
        Scanner kbInt = new Scanner(System.in);
        Scanner kbString = new Scanner(System.in);

        System.out.println("***Passenger Details: ***");
        System.out.print("Title : ");titleRead=kbInt.nextLine();
        System.out.print("First Name : ");FNameRead=kbString.nextLine();
        System.out.print("Surname : ");SNameRead=kbString.nextLine();
        name = new Name(titleRead, FNameRead, SNameRead);

        System.out.println("\n");
        System.out.println("***Date of Birth: ***");
        System.out.print("Day : ");dayRead=kbInt.nextInt();
        System.out.print("Month : ");monthRead=kbInt.nextInt();
        System.out.print("Year : ");yearRead=kbString.nextInt();
        dateOfBirth = new Date(dayRead, monthRead, yearRead);   
    }

        catch (InputMismatchException e)
        {
            System.out.print("Incorrect input, please input data in the correct format!");
        }
}

最后,对于 person 类,这里是 toString

public String toString()
{
    String nameAndAge = "Name = " + name + ", DOB = " + dateOfBirth;
    return nameAndAge;
}

在继承自Person的passenger类中,这里是正在创建的数组列表和构造函数

private ArrayList<Passenger> passengers = new ArrayList<Passenger>();

//Constructor
public Passenger()
{
    noOfBags = 0;
    priorityBoarding = false;
    id = nextid++;
}

//Initiliaze constructor
public Passenger(String titleIn, String firstNameIn, String surnameIn, int day, int month, int year, int bag, boolean pb)
{
    super(titleIn, firstNameIn, surnameIn, day, month, year);
    noOfBags = bag;
    priorityBoarding = pb;
}

这里我添加了noOfBags和优先登机的读取,亲自添加到read方法中

public void bagsPriorityRead()
{
    Scanner kbInt = new Scanner(System.in);
    Scanner kbString = new Scanner(System.in);

    super.read();
    System.out.print("Number of bags : ");bagsRead=kbString.nextInt();
    System.out.print("Priority boarding (Y/N) : ");priorityRead=kbString.next().charAt(0);
}

最后,这是passenger中的toString方法

//ToString Method
public String toString()
{
    return " ID: " +id + " - " + super.toString() + " \tNo of Bags: " +bagsRead + "\tDo they have priority boarding? : " +priorityRead;
}

//添加了添加操作的图像以及打印时格式不正确的方式

adding the passenger

//打印时格式不正确 Improperly formatted

如上所述,如果有人能指出我出错的地方/如何修复我的错误,我们将不胜感激。如果可能需要更多代码来查找问题根源,请告诉我。

提前致谢, 杰森

最佳答案

看起来问题(如果有)出现在 Name::toString() 中,或者 new Name(x, y, z) 中的参数顺序错误

String nameAndAge = "Name = " + name + ", DOB = " + dateOfBirth;

但是您还没有发布 Name 类。

关于java - 将信息读入数组时的格式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27084803/

相关文章:

java - 如何防止我的变量永远持续下去?

java - 将 Webelement 类型转换为 Select 时出错

java - 为什么从 String[] 到 Object 的转换只能使用引用?

javascript使用类名遍历表行

php - 分别获取多维数组中的项

java - 如何为 Swing JDialog 设置 FilterExtensions?

c - 关于如何在数组中插入字符串的问题

c# - 调用重写方法的祖父实现

inheritance - Grails继承映射中的鉴别器问题

c++ - 为什么指向具有重写方法的派生类对象的基类指针调用基类方法?