如何使用扫描仪读取多个文件行并将它们存储到不同的对象中



我有一个文件,我正在尝试从中读取多行。但根据它是房地产经纪人线还是物业线,它会将某些内容存储到线值数组中。我无法找出正确的循环来正确读取行 这是我读取行的代码

while (fileScanner.hasNextLine()) {
String oneLine;
String[] lineValues = null;
oneLine = fileScanner.nextLine();
lineValues = oneLine.split(",");
if (lineValues[0].contains("REALTOR")) {
if (lineValues[1].contains("ADD")) {                    
processRealtorAddition(lineValues);                    
} else if (lineValues[1].contains("DEL")) {
realtorDeletion(lineValues);
}
else
break;
}  if (lineValues[0].contains("PROPERTY")) {
System.out.println("fsdfsdfsdfdsfdsfsdfsdfds");                
if (lineValues[1].contains("ADD")) {                    
processPropertyAddition(lineValues);
break;
} else if (lineValues[1].contains("DEL")) {
propertyDeletion(lineValues);
}
}             
}
}

但是当我运行时,我得到这个:

添加了许可证编号为 MN4564567 的房地产经纪人对象 fsdfsdfsdfdsfdsfsdfsdfds Realtor Log:

属性日志: 属性{mlsNumber=4455667, licenseNumber=MN4564567, streetAdress=4455 This Circle, city=Denver, state=CO, zipCode=80333, 卧室=1, 浴室=1.0, 售出=假, 要价=344555.0} 全部 属性正确 生成成功(总时间:0 秒(

这是我尝试读取的文件:

房地产经纪人,添加,MN4564567,卡拉,梳子,444-555-6666,0.014 属性,添加,4455667,MN4564567,4455 这 圆圈,丹佛,科罗拉多州,80333,1,1,N,344555 房地产经纪人,添加,RR6655443,杰里,史密斯,555-444-3333,0.013 物业,地址,23456789,RR6655443,888 特里 巷,朗蒙特,科罗拉多州,80503,3,2,N,222222 房地产经纪人,添加,AB1234567,马修,穆内兹,123-456-7890,0.012 属性,添加,1234567,AB1234567,1234 其中 方式,某处,CO,82222,3,3,Y,222222 属性,ADD,2234567,AB1234567,345 主街,柯林斯堡,CO,81333,4,3.5,N,222333 房地产经纪人,德尔,MN4564567 房地产经纪人,添加,XY98765432,亚历克斯,容,999-888-7777,0.013 物业,ADD,9998888,XY98765432,111主街,夏延,怀俄明州,82222,1,1

,N,199888

我只需要它来读取第一行以获取所有正确的信息,然后重新开始 while 循环,然后阅读第二行。谢谢!

这是处理加法的静态方法

static void processPropertyAddition(String lineValues[]) {
Property property = new Property(lineValues);
boolean value1 = property.verifyMlsNumber();
boolean value2 = property.verifyState();
boolean value3 = property.verifyZipCode();
if (value1 == false) {
System.out.println("ERROR: invalid MLS number: "
+ property.mlsNumber + "n");
} else if (value2 == false) {
System.out.println("ERROR: Invalid State: "
+ property.state + "n");
} else if (value3 == false) {
System.out.println("ERROR: Invalid zip code: "
+ property.zipCode + "n");
}
boolean value4 = realtorLogImpl.isLicenseUnique(property.getLicenseNumber());
boolean value5 = propertyLogImpl.isMlsUnique(property.getMlsNumber());
if (value4 == false && value5 == false) {
propertyList.add(property);
} else if (value5 == true && value4 == true) {
propertyList.add(property);
} else if (value4 == false && value5 == true) {
propertyList.add(property);
System.out.println("The Property with Realtor license number "
+ property.getLicenseNumber() + " and with MLS number"
+ property.getMlsNumber() + " has been added");
} else if (value4 == true && value5 == false) {
System.err.println(" Property will not be added due to "
+ "a Realtor license or a MLS number that is not "
+ "unique");
}
}

这是PropertyLogImpl将属性添加到属性链表的方法

public boolean add(Property property) {
return propertyList.add(property);
}

我必须有一个添加属性的方法,我觉得这个方法可能是不正确的,可能是它的原因

而不是这个

}  if (lineValues[0].contains("PROPERTY")) {

你可能想写

} else if (lineValues[0].contains("PROPERTY")) {

此外,每当您使用contains您可能想使用equals时。

正如评论中已经提到的,您对break语句的使用是可疑的。

如果您遇到无限循环,到目前为止显示的代码中没有任何内容会导致这种情况。无限循环可能来自这里:

realtorLogImpl.isLicenseUnique(property.getLicenseNumber());

使用调试器找到原因应该很容易(提示,提示,...

break语句脱离了for/while循环。

如果在processPropertyAddition方法调用后删除 break 语句,这应该可以修复您的 bug。

相关内容

  • 没有找到相关文章

最新更新