我有一个文件,我试图从中读取多行。但是,如果它是一个房地产线或属性线,它会将某些东西存储到线值数组中。我无法弄清楚正确读取线条的循环这是我读取线条的代码
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的Realtor对象 fsdfsdfsdfdsfdsfsdfsdfds房地产经纪人日志:
Property Log:Property {mlsNumber = 4455667,licenseNumber = MN4564567, streetAdress = 4455这个圈子,城市=丹佛,州= CO,zipCode = 80333, 卧室= 1,浴室= 1.0,出售=假,askPrice = 344555.0}全部 属性是正确的BUILD SUCCESSFUL(总时间:0秒)
这是我正在尝试阅读的文件:
REALTOR,ADD,MN4564567,卡拉,梳子,444-555-6666,0.014 PROPERTY,ADD,4455667,MN4564567,4455这 圈,丹佛,CO,80333,1,1,N,344555 房地产经纪人,ADD,RR6655443,杰里,史密斯,555-444-3333,0.013 PROPERTY,ADD,23456789,RR6655443,888 Terry 车道,朗蒙特,CO,80503,3,2,N,222222 房地产经纪人,ADD,AB1234567,马修,Munez,123-456-7890,0.012 PROPERTY,ADD,1234567,AB1234567,1234其中 Way,Somewhere,CO,82222,3,3,Y,222222 PROPERTY,ADD,2234567,AB1234567,345 Main St,Fort Collins,CO,81333,4,3.5,N,222333 REALTOR,DEL,MN4564567 房地产经纪人,ADD,XY98765432,亚历克斯,榕,999-888-7777,0.013 PROPERTY,ADD,9998888,XY98765432,111 Main St,Cheyenne,WY,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);
}
我必须有一个方法来添加属性,我觉得这个方法可能不正确,可能是它的原因
答案 0 :(得分:0)
而不是这个
} if (lineValues[0].contains("PROPERTY")) {
你可能想写
} else if (lineValues[0].contains("PROPERTY")) {
每当您使用contains
时,您可能会想要使用equals
。
正如评论中已经提到的,您对break
语句的使用是可疑的。
如果遇到无限循环,到目前为止所显示的代码中没有任何内容会导致这种情况发生。无限循环可能来自这里:
realtorLogImpl.isLicenseUnique(property.getLicenseNumber());
使用调试器(提示,提示,...)
找到原因应该很容易答案 1 :(得分:0)
break
语句会突破for/while
循环。
如果在processPropertyAddition
方法调用之后删除break语句,则应该修复您的错误。