【发布时间】:2015-01-14 11:15:28
【问题描述】:
我有一个数组来保存结果集中的值。我检索数组的代码大纲是:
public String[][] ref_Details() {
int i = 0;
String a[][] = new String[47][11];
try
{
con = getConnection();
stmt = con.createStatement();
String sql=" select b.LOGTIME, b.beam_current, b.beam_energy ..."; // shortened
stmt.executeQuery(sql);
rs = stmt.getResultSet();
while(rs.next()) {
for(int j=0; j<11; j++)
a[i][j] = rs.getString(j+1);
i++;
}
}
catch( Exception e ) { ... }
finally {
closeConnection(stmt, rs, con);
}
return a;
}
得到的样本表为:
从表中可以清楚地看出,第二列 beam_current 的值接近于从 0 到 220 的每个十的整数倍:(0, 10, 20 ... 220)。我想过滤我的数据集,以便对于十的每个倍数,我只选择最接近该倍数的行。为此我:
- 从
beam_current的所有行中减去 10 并找出获得的差异:差异最小的行是我对 10 的倍数感兴趣的唯一行。T - 重复第 1 步,直到从所有行中减去总共 220 行。
我的预期结果是 22 行,而不是来自示例数据的原始 47 行。例如,上面示例数据图片中编号为 21 的行将对应于值 130 的选定行。
我的问题是我没有看到预期的结果。我试过的代码是:
public int[] ref_BeamCurrent() {
int i = 0;
int[] arr = new int[47];
try
{
con = getConnection();
...
rs = stmt.getResultSet();
while(rs.next())
{
for(i=0; i<arr.length; i++)
{
arr[i] = rs.getInt(2);
System.out.println(arr);
while (i < arr.length && number <= 210)
{
arr[i] = arr[i] - number;
System.out.println(arr);
number = number + 10;
System.out.println(number);
i = i + 1;
// System.out.println(arr);
}
}
}
}
catch( Exception e ) { ... }
finally { ... }
return arr;
}
这段代码似乎完全选择了错误的行——我做错了什么?
【问题讨论】:
-
为什么你不能得到 10 到 220 的总和并从第二列中扣除。您可以在循环时扣除上述值的同时获得最小值
-
@AndyBrown 我更新了我的问题
-
@SRY_JAVA 我已经编辑了你的问题,试图澄清你的目标和你遇到的问题。它是否仍然准确地描述了您期望看到的内容和您遇到的问题?
-
@AndyBrown,是的,这正是我的目标,谢谢。
标签: java multidimensional-array