输出值的总和

时间:2017-07-13 15:04:07

标签: java arraylist

我有一个名为Gear的对象的数组列表。每个对象都具有String NameString TypeInt rateOfFireInt Damage的属性。我还有一个函数,通过将伤害乘以rateOfFire来计算每个武器的每秒伤害(DPS)。我遇到的问题是这个功能打印出列表中每个武器的伤害,但我也想要列表中所有武器的总DPS。

这是我的方法:

public static void getDPS()

    {
    for (int i = 0; i < Gear.size(); i++) 
        {
        int damage =  Gear.get(i).damage;
        int fireRate = Gear.get(i).fireRate;
        int DPS =(damage*fireRate)/60;
        System.out.println("DPS for weapon " + i+1 + " is: " +DPS);
        System.out.println("Total DPS= " );
        }
    }

这是我的输出:

DPS for weapon 01 is: 10

Total DPS= 


DPS for weapon 11 is: 12

Total DPS= 

任何建议都会非常感激,因为我只是编程的新手!

3 个答案:

答案 0 :(得分:0)

只需在循环之前声明一个总DPS变量,在循环中添加当前武器的DPS,然后打印总数。

int totalDPS = 0;

for (int i = 0; i < Gear.size(); i++) 
    {
    int damage =  Gear.get(i).damage;
    int fireRate = Gear.get(i).fireRate;
    int DPS =(damage*fireRate)/60;
    totalDPS += DPS; // add current DPS to total
    System.out.println("DPS for weapon " + i+1 + " is: " +DPS);
    System.out.println("Total DPS= " + totalDPS );

    }

答案 1 :(得分:0)

int total = 0;//define a new variable

for (int i = 0; i < Gear.size(); i++) 
{
    int damage =  Gear.get(i).damage;
    int fireRate = Gear.get(i).fireRate;
    int DPS =(damage*fireRate)/60;
    total += DPS; // add to total var.
    System.out.println("DPS for weapon " + i+1 + " is: " +DPS);
}

System.out.println("Total DPS= " + total);//print the total outside the loop

同样@Aaron在评论包i+1中提到使用括号(i+1)来避免String连接。

答案 2 :(得分:0)

当然还有一种“流畅”的解决方案......

class Gear {
    private String name;
    private String type;
    private int rateOfFire;
    private int damage;

    // getters and setters ...
}

创建测试列表:

List<Gear> gears = new ArrayList<>();
gears.add(new Gear("a", "a", 10, 10));
gears.add(new Gear("b", "b", 5, 5));

Gear打印DPS和总DPS:

gears.forEach(x -> 
  System.out.println("dps = " + x.getDamage() * x.getRateOfFire()));
System.out.println("Total dps = " + 
  gears.stream().mapToInt(x -> x.getDamage() * x.getRateOfFire()).sum());

打印哪些:

dps = 100
dps = 25
Total dps = 125