由于某种原因不记得怎么做

时间:2016-03-24 23:02:47

标签: java

这个应该相当简单我想,我只是不记得当使用对象的get方法时,如何从包中拉出最高的双倍并将它放在println中。

到目前为止,我只是以百分比打印每个对象。但是对于我的生活,我只是记不起来,我知道我以前做过这件事。

public void displayBookWithBiggestPercentageMarkup(){
    Collection<Book> books  = getCollectionOfItems();
    Iterator<Book> it = books.iterator();

  while(it.hasNext()){
      Book b = it.next();
      double percent = b.getSuggestedRetailPriceDollars() / b.getManufacturingPriceDollars() * 100.0;
      System.out.println("Highest markup is " + percent + " " + b.getTitle() + " " + b.getAuthor().getName().getLastName());
    }   
}

我很确定我需要另一个局部变量,但我似乎无法做任何事情,只是让它等于其他百分比。我现在已经删除了另一个变量,因为我试着考虑它。

2 个答案:

答案 0 :(得分:5)

我不会因为它的功课而做了很多细节(顺便说一下,这是好事,但是这里有关键的想法:跟踪当你的循环运行时,你目前看到的最大百分比。这就是你想要的其他变量。

答案 1 :(得分:0)

发布你迄今为止尝试过的内容。你走在正确的轨道上。当您浏览书籍时,保持变量不断更新,目前为止看到的百分比最高,相关书籍的另一个变量。迭代完成后,在循环外的末尾输出变量。另外,不要忘记检查空书清单的边缘情况!这样的事情可以解决问题:

public void displayBookWithBiggestPercentageMarkup(){
    Collection<Book> books  = getCollectionOfItems();
  if (books.size() == 0) {
      return;
  }

  Iterator<Book> it = books.iterator();

  double highestPercent = 0;
  Book highestPercentBook = null;
  while(it.hasNext()){
      Book b = it.next();

      double percent = b.getSuggestedRetailPriceDollars() / b.getManufacturingPriceDollars() * 100.0;

      if (percent > highestPercent) {
          highestPercent = percent;
          highestPercentBook = b;
      }
   }    
   System.out.println("Highest markup is " + highestPercent
       + " " + highestPercentBook.getTitle()
       + " " + highestPercentBook.getAuthor().getName().getLastName());    
}