2017-07-26 117 views
0

我想读一个文件并打印出信息以一定的方式如何打印出特定方式使用嵌套的循环与打印作家

这是我目前的方法

public class PrintImpl { 

public void createReport(PropertyLogImpl propertyLogImpl, RealtorLogImpl realtorLogImpl, String fileName) { 
    System.out.println("Creating clean report.."); 
    System.out.println("Report is complete -- located in file: " + fileName); 

    try { 

     PrintWriter writer = new PrintWriter(fileName); 
     LinkedList<Property> propertyList = propertyLogImpl.getPropertyList(); 
     System.out.println("Realtor Log:"); 
     RealtorNode listTop = realtorLogImpl.getListTop(); 
     RealtorNode temp = listTop; 
     Iterator<Property> iter = propertyList.iterator(); 
     propertyLogImpl.setPropertyList(propertyList); 
     Property property = iter.next(); 

     while (temp != null) { 
      writer.println(temp.getRealtor().getLicenseNumber() + " " + temp.getRealtor().getLastName() + ", " + temp.getRealtor().getFirstName()); 

      if (temp.getRealtor().getLicenseNumber().compareTo(property.getLicenseNumber()) == 0) { 
       writer.println(" " + property.getMlsNumber() + " " 
         + property.getStreetAdress() + " " 
         + property.getBedrooms() 
         + "/" + property.getBathrooms() + "$ " 
         + property.getAskingPrice() + " " 
         + property.isSold()); 

       writer.println("  " + property.getCity() + ", " 
         + property.getState() + ", " + property.getZipCode()); 
       if (iter.hasNext()) { 
        property = iter.next(); 
       } 
      } 

     } 
     temp = temp.getNextNode(); 

     writer.close(); 

    } catch (FileNotFoundException ex) { 

     System.out.println("File was not found"); 
     System.out.println(); 
    } 
} 

}

但事情是,它陷入了无限循环。所以它应该做的是将房地产经纪人许可证号码与房产许可证号码相匹配。该属性是一个链表,而房地产经纪人就像一个链表。基本上,我试图做的是获得一个节点,并通过属性进行传播并打印出房地产经纪人的所有属性。然后切换到下一个节点并重复。但是我尝试过的所有循环都没有奏效。请帮忙!

这是该文件假设看起来像

CD4524521 snart, paul 
     1254294   246 wart street  2/3.0 $ 456321.00 SOLD 
        somewhere, CO 54236 

      1683946  879 Main St   2/2.0 $ 646589.00 
       Somehwere, CO 45726 

它看起来像,只是地产商的名字,然后不断增加属性的房地产经纪人,后有对地产商没有更多的属性,切换到一个新的房地产经纪人,并不断为其添加属性。谢谢

回答

0

temp = temp.getNextNode();是在while循环之外。所以temp的值永远不会改变。这就是为什么你得到一个无限循环,因为你的条件是temp != null

此外,我建议你考虑重写该Property类的toString()方法或添加另一种方法来获得属性的格式良好的字符串表示形式。你的代码看起来非常混乱,如果你开始将这些字符串拼凑在while循环中的输出。

@Override 
public String toString(){ 
    return prop1 + "\t" + prop2 
     + "whatever" + somefield; 
}