Java 遍历对象的arraylist

Java 遍历对象的arraylist,java,object,arraylist,Java,Object,Arraylist,我正在处理一个项目,该项目有一个名为Items的类和一个名为totals的方法,该方法计算Items对象数组的总计。 由于某些原因,它看不到项目,我知道我遗漏了一些简单或明显的东西,但我就是想不出来。我们将不胜感激 public void totals(){ int index=0; for (Iterator it = items.iterator(); it.hasNext();) { Items i = it.next(); double it

我正在处理一个项目,该项目有一个名为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;
 }

提前感谢您的帮助。

这里有许多潜在问题

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

您可以调用
items.get(index)
,但
index
始终为0。您可能希望在此处使用
it


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

基本上,有两个缺陷:

  • 您从不增加
    itotal
    变量,它是在循环中声明的
  • 在当前迭代中,您永远不会访问变量
    i
  • 另外,您的
    totals
    方法不应该返回一些东西(比如
    itotal
    )吗

    在我看来,迭代items数组的正确方法是

    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
    }
    
    公共双倍总计(){
    双itotal=0.0;/#A
    for(Iterator it=items.Iterator();it.hasNext();){/#B
    Items i=it.next();/#C
    itotal+=i.getTotal();/#D
    }
    返回itotal;/#E
    }
    
    基本上:

    • #A在这里初始化
      itotal
      变量(循环外部),该变量将包含所有项目的总计
    • #B您开始迭代所有项目
    • #C您将获得数组中的下一项
    • #D您用当前项目的总计增加总计
    • #你把总数还给我吗

    是否可以粘贴正在发生的任何错误?“它看不到项目”不是很专业,也不是针对这个问题。这是我在线程“main”java.lang.RuntimeException中编译异常时遇到的错误:不可编译的源代码-错误的符号类型:ReciptPrint处的java.lang.Object.getTotal.ReciptPrint.totals(ReciptPrinter.java:52)在ReciptPrint.ReciptPrint.main处(ReciptPrinter.java:36)java结果:1 IDE给出了此错误找不到符号符号:方法getTotal()位置:Object类型的变量项这让我更接近了,谢谢,我仍然对以下行有问题:items i=it.next();它给出了错误“不兼容的类型:Object无法转换为items”我的错,我已经更新了我的答案。如果你的项目列表声明为
    list
    ,迭代器声明可以声明为
    iterator
    ,并且项目在循环中会有正确的类型。噢,哇!现在我感觉自己像个傻瓜(我是),但这让我走了。谢谢你!很高兴你找到了你的方式;)谢谢!