java - 循环FileReader

标签 java loops filereader

我必须逐行读取文本文件,但在7行之后,我想通过将7行分配给7个不同的变量来使用读取的内容。分配它们后,我想使用变量。这是简单的部分,我知道该怎么做,我遇到的困难是,在使用了7个变量之后,我希望能够将文本文件的下7行分配给相同的变量,然后使用它们再次。我知道我必须使用循环,但是,


如何使它在7行之后停止,而不是仅仅将行重新分配给变量?
我应该使用2个循环吗?
还是有类似中断的东西,或者我可以申请某种“暂停”?
还是可以与FileReader类一起使用的某种计数器?
还是我应该创建一个?


这是我们老师想要的。



停车票

该怎么办:
该作业基于第574页的编程挑战问题8并进行了一些修订,因此请仔细阅读本讲义。如果需要,您可以2人一组的形式工作。合作和讨论将有所帮助。注意:这是课程中最长且可能是最困难的程序,因此请小心操作并按照说明进行操作。

对于此作业,您将设计一组类,这些类可以一起工作,以模拟停车员向在米处停放的某些汽车发放停车票。与实际电表和票务的工作方式相比,该问题可能有点人为。

您将设计四个单独的类和一个演示程序来运行所有内容。在开始编写Java代码之前,请仔细阅读整个作业。您需要了解几个类的结构,并了解数据文件的组织方式。

基本设置是一组停车收费表,在不同的时间将汽车停在停车收费表上。

每辆汽车将购买以分钟为单位记录的一些停车时间。而且每辆车将停泊一定的时间(以分钟为单位)。有些停车时间要比购买的时间长,有些停车时间要比购买的时间少。

这是您需要开发的四个类。
•停放的汽车类:该类应模拟停放的汽车。该班的职责如下:
-了解汽车的品牌,型号,颜色,牌照号码
-要知道其停车收费表的身份证号码。
-具有toString()方法来报告其标识信息

•ParkingMeter类:该类将模拟一个停车计时器。班级的职责如下:
-知道自己的电表识别号
-要知道已购买的分钟数
-了解停车时间
-具有toString()方法来报告其信息

•ParkingOfficer类:该类应模拟停车人员检查停放的汽车。该班的职责如下:
-有两个实例变量:一个用于人员的名称,一个用于人员的徽章编号
-拥有一个带有两个参数的构造函数,分别用于泊车员的姓名和徽章编号
-具有toString()方法
-有一个inspect()方法,该方法接收一个ParkedCar对象和一个ParkingMeter对象作为参数。此方法确定时间是否已到期
如果时间已过期,它将创建一个停车票对象,该对象作为来自inspect()的返回值返回。
如果时间未到期,则返回null。

•ParkingTicket类:该类将模拟停车票。班级的职责如下:
-具有一个构造函数,该构造函数接收用于初始化类中相应实例变量的ParkedCar对象,ParkingMeter对象和ParkingOfficer对象作为参数。确保对每个这些参数对象使用复制构造函数。
-此类还具有罚款量的实例变量。
-罚款由ParkingTicket构造函数计算:
对于违章停车的第一小时或不足一小时的罚款为25美元,对违章停车的每一小时或不足一小时的罚款为10美元。
如果时间未到,罚款将设置为零。
-有一个toString()方法,以一种有用的设计格式来准备票证(尝试与下面显示的示例输出匹配或进行您自己的改进。它必须报告非法停放的品牌,型号,颜色和许可证编号汽车。它还报告罚款金额以及签发罚单的警官的姓名和证件号码。在此toString()方法中,您必须有效使用toString()方法用于停车罚单中的其他类别(即,停放的汽车,ParkingMeter和ParkingOfficer)

测试班
使用main()编写一个测试类TicketDemo,以使用上述类运行模拟,如下所示:
•创建一个PoliceOfficer对象。填写您自己的姓名和徽章编号。您可以将其硬连线到测试程序中,也可以要求用户输入数据(您的选择)。
•循环从数据文件Asg-5_in.txt中读取数据。 (注意:文件Asg-5_inExplain.txt描述了如何解释文件内容。)
o读取汽车和仪表的一个数据块,并创建一个ParkedCar对象和一个ParkingMeter对象
o使用您的ParkedCar和“停车收费表”对象作为参数来调用停车官员的inspect()方法。 inspect方法将返回票证或null。
o如果返回了票证,请调用toString()方法在屏幕上打印票证。
o如果没有发出票证,则显示有关汽车的打印标识信息(使用其toString()方法。
o让循环重复进行,直到输入文件中没有更多数据可用为止。



这是我到目前为止的成果,尽管我还差点没完成。

停放的汽车类:

public class ParkedCar{

private String make;
private String model;
private String color;
private String license;
private String meterID;

public String getMake(String make)
{
    this.make = make;
    return make;
}

public String getModel(String model)
{
    this.model = model;
    return model;
}

public String getColor(String color)
{
    this.color = color;
    return color;
}

public String getLicense(String license)
{
    this.license = license;
    return license;
}

public String getMeterID(String meterID)
{
    this.meterID = meterID;
    return meterID;
}

public String toString()
{
    String str = "\nMake: " + make + "\nModel: " + model + "\nColor: " + color +
                 "\nLicense: " + license + "\nMeter ID: " + meterID;
    return str;
}
}


停车收费表类:

public class ParkingMeter{

private String meterID;
private int minsPurchased;
private int minsParked;

public String getMeterID(String meterID)
{
    this.meterID = meterID;
    return meterID;
}

public int getMinsPurchased(int minsPurchased)
{
    this.minsPurchased = minsPurchased;
    return minsPurchased;
}

public int getColor(int minsParked)
{
    this.minsParked = minsParked;
    return minsParked;
}

public String toString()
{
    String str = "\nMeter ID: " + meterID + "\nMinutes Purchased: " + minsPurchased +
                 "\nMinutes Parked: " + minsParked;
    return str;
}
}


ParkingOfficer类:

public class ParkingOfficer{

private String officerName;
private String badgeNumber;

public ParkingOfficer(String officerName, String badgeNumber)
{
    this.officerName = officerName;
    this.badgeNumber = badgeNumber;
}

public ParkingOfficer(ParkingOfficer object2)
{
    officerName = object2.officerName;
    badgeNumber = object2.badgeNumber;
}


public void setParkingOfficer(String officerName, String badgeNumber)
{
    this.officerName = officerName;
    this.badgeNumber = badgeNumber;
}

public String toString()
{
    String str = "\nOfficer's Name: " + officerName + "\nOfficer's Badge Number: " + badgeNumber;
    return str;
}

}

最佳答案

基本结构如下所示:

while (true) {
  String v1 = reader.readLine();
  if (v1 == null)
    break;
  String v2 = reader.readLine();
  ...
  String v7 = reader.readLine();
  /* Do what ever you want with v1 through v7. */
  ...
}
/* End of loop. */

关于java - 循环FileReader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7859514/

相关文章:

java - 如果别的??尝试??我需要方法方面的帮助

java - Hibernate ManyToOne 映射异常

javascript - jquery 插件中的每个循环都失败了吗?

loops - 如何仅在一定时间内循环批处理脚本?

带有 base64 数据内容的 HTML5 对象标记导致 Chrome 崩溃

java - 创建带有 FileDescriptor 的 FileReader 有何用处?

java - 将毫秒转换为年数、月数和天数的最佳方法

java - 如何使用 JMS 和 CDI 1.2 查找 EJB

c++ - 在 C++ 中,如何找到直接或间接链接到数组特定元素的数组的所有元素?

javascript - 从 Cordova Capture 获取音频数据的 base64