当前位置: 首页 > 知识库问答 >
问题:

对象数组的For循环只考虑最后一个对象[duplicate]

董和泽
2023-03-14

我试图使用for或增强的for循环遍历对象数组,但出于某种原因,它只使用数组中的最后一个对象。

例如,在这里我创建了一个具有高度和宽度变量的类。

public class Number {
private static double height;
private static double width;


public Number(double h, double w){
    setHeight(h);
    setWidth(w);
  } 
public void setHeight(double h) { 
    if(h>0){
        height=h;
    }
    else {
        height = 0;
    }
}
public double getHeight() {
    return height;
}

public void setWidth(double width) {
    if(width>0){
        this.width=width;
    }
    else {
        this.width = 0;
    }
}
public double getWidth() {
    return width;
}

在我下面主要方法的循环中,我尝试对所有“高度”输入求和。

Number [] totaltest ={
    
    new Number (5,4),
    new Number (7,2),
    new Number (6,4),
    new Number (1,5),
    new Number (3,2)
    };
double total = 0.00;

    for(Number e: totaltest) {
        total+=e.getHeight();
        
    }
    System.out.println(total);

当我运行这段代码时,输出是15。这意味着它只循环了totaltest[4],连续5次。

我想找到的答案是22。

我尝试过用所有不同的方法声明和初始化数组,但是答案没有改变。此外,错误不仅仅是在试图找到高度时,而是在每个方法中。

这段代码有什么问题,我该如何修复?谢谢

共有1个答案

范俊逸
2023-03-14

您的高度和宽度字段被声明为静态。因此,最后一个构造函数调用更改了所有Number实例的getHeight()的结果。

删除静态关键字,Number对象就不会再踩到对方的脚趾了。

 类似资料:
  • 我的程序中有一个错误,使我的循环只读取输入字符串的最后一部分。我想让程序计算一个字符串中每个字符的个数。我不想要答案告诉我如何更有效地存储这些值,而不重复所有内容26次。请回答我在这里提出的问题。抱歉,如果这是一个副本!我只是不知道该说明什么,因为没有明显的错误。

  • 我有这个数组的对象,我想删除最后一个对象。有人能让我知道这样做吗?

  • 尝试使用所有独特的硬币进行选择过滤器,但无法正确到达其末尾。 在循环浏览数据时,我可以得到所有硬币的列表。 我还想使用Set方法和spread操作符来获得唯一的值,但我不知道如何组合所有这些。

  • 我正在做一个游戏,有三个骰子方块,点击一个按钮就会显示出随机的面孔。图像由css图像精灵生成。如果随机数为1,则骰子立方体将分配给具有图像精灵的css类。 我有一个单独的按钮,当点击它时,应该运行上面的diceroll功能到三个div,ID为dice1、dice2和dice3。 我想用 我研究了一下,但找不到实现最后两行注释代码的方法。请让我知道我的方法是否正确,并帮助我与代码。

  • 我用的是angular 5。我尝试在下面的html数组中使用嵌套循环 对象: HTML: 我得到以下解析错误: 我在app.module.ts导入了BrowserModul和Common Modul,这样用户就可以将一周中的任何一天的时间表复制到一周的其余时间。 编辑:我的代码中的实际超文本标记语言: