gpt4 book ai didi

java - 以动态方式计算双变量的平均值

转载 作者:行者123 更新时间:2023-12-02 05:14:06 25 4
gpt4 key购买 nike

我是java新手。这个问题可能有答案,但我找不到。我必须在java中创建一个方法,在该方法中我必须从数据库中检索值,并且必须考虑数据库中未显示“OFF”的那些列值。然后必须计算这些值的平均值。现在我正在查看数据库并手动仅考虑那些具有一些双值而不是“OFF”的列。但现在这必须动态完成。我总共有 8 列,其中我只需要取 3 列,因为在其他列中没有值,只有“OFF”被显示,我可以计算其平均值。它的代码是

 try {
con = getConnection();


String sql = "exec vcs_gauge @gauge_name=?,@first_rec_time=?,@last_rec_time=?";


clstmt = con.prepareCall(sql);
clstmt.setString(1, "vs3_bag");
clstmt.setString(2, "2014-09-01 10:00:00");
clstmt.setString(3, "2014-09-01 11:00:00");
clstmt.execute();
rs = clstmt.getResultSet();



while (rs.next()) {
a4 = rs.getDouble(7);
a5 = rs.getDouble(8);
a6 = rs.getDouble(10);
averageMap3.put(rs.getString(1), (a4 + a5 + a6) / 3.0);

}


//System.out.println("valus is" +averageList);

我现在想要的是,不是指定我想要采用的列,而是执行一个条件,检查检索到的列是否具有字符串“OFF”值,然后不应将其考虑进行平均计算。我必须以行方式计算平均值,即计算一行所有列的平均值。提前致谢

最佳答案

您必须将构建平均值的步骤分解为多个步骤。例如:

while (rs.next()) {
double sum = 0;
int count = 0;

if (!"OFF".equals(rs.getString(7))) {
sum += rs.getDouble(7);
count += 1;
}

if (!"OFF".equals(rs.getString(8))) {
sum += rs.getDouble(8);
count += 1;
}

if (!"OFF".equals(rs.getString(10))) {
sum += rs.getDouble(10);
count += 1;
}

double average;
if (count > 0)
average = sum / count;
else
average = 0; // or whatever the result of all OFF means

averageMap3.put(rs.getString(1), average);
}

应该有更短的方法来实现相同的目标,但这是一个好的开始。

例如同样的事情,但有一个循环并使用 ?运算符。

while (rs.next()) {
double sum = 0;
int count = 0;
for (int column : new int[] { 7, 8, 10 }) {
if (!"OFF".equals(rs.getString(column))) {
sum += rs.getDouble(column);
count += 1;
}
}
double average = count > 0 ? sum / count : 0;
averageMap3.put(rs.getString(1), average);
}

关于java - 以动态方式计算双变量的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27125122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com