迭代对象的arraylist

时间:2015-05-12 02:46:42

标签: java object arraylist

我正在开发一个项目,它有一个名为Items的类和一个名为totals的方法,它计算一个Items对象数组的总计。 由于某种原因,它无法看到物品,我知道我错过了一些简单或明显的东西,但我无法弄明白。蚂蚁帮助将不胜感激。

 public void totals(){

    int index=0;
   for (Iterator it = items.iterator(); it.hasNext();) {
       Items i = it.next();
       double itotal;
        itotal = items.get(index).Items.getTotal();
   }
}

这里是Items类

public class Items {
 public String name;//instance variable for item name
 public int number;//instance variable for number of item
 public double price;//instance variable for unit price
 public double total;//instance variable for total
  Items(String name,int number,double price){
    this.name=name;
    this.number=number;
    this.price=price;
    total=number*price;
}
public void setName(String name){
     this.name=name;
 }
 public void setNumber(int number){
     this.number=number;
 }
 public void setPrice(double price){
     this.price=price;
 }
 public void setTotal(){
     total=number*price;
 }
 public String getName(){
     return name;
 }
 public int getNumber(){
     return number;
 }
 public double getTotal(){
     return total;
 }
 public double getPrice(){
     return price;
 }

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

基本上,有两个缺点:

  1. 你永远不会增加itotal变量并在循环中声明它
  2. 您永远不会访问当前迭代中的变量i
  3. 而且,您的totals方法不应该返回某些内容(例如itotal)吗?

    我看到它的方式,迭代该项数组的正确方法是

    public double totals(){
        double itotal = 0.0;    //#A
        for (Iterator<Items> it = items.iterator(); it.hasNext();) {   //#B
           Items i = it.next();   //#C
           itotal += i.getTotal(); //#D
        }
        return itotal; //#E
    }
    

    基本上:

    • #A在此初始化itotal变量(循环外),其中包含所有项目的总计
    • #B您开始迭代所有项目
    • #C你得到数组中的下一个项目
    • #D您使用当前项目的总计
    • 增加总计
    • #E您返回总计

答案 1 :(得分:0)

这里有许多潜在的问题。

在for循环中,您声明Items i,但从不使用它。也许it = it.next()应该是for循环的一部分呢?

您致电items.get(index),但index始终为0.您可能希望在此使用it

您声明double itotal并在for循环中分配它,因此在每次迭代时都会覆盖它。也许你想用循环外的初始值声明它,然后在循环内增加它。