我有一个名为Gear
的对象的数组列表。每个对象都具有String Name
,String Type
,Int rateOfFire
和Int 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=
任何建议都会非常感激,因为我只是编程的新手!
答案 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