怎么把二位数组转换为list

LB4229 2012-03-01 10:27:50

run:这是我计算后得到的二维数组(举两个例子,后面还有很多行)
my_Xij[ 0 , 0]: 1.0
my_Xij[ 0 , 1]: 1.0
my_Xij[ 0 , 2]: 5.0
my_Xij[ 0 , 3]: 1.0
my_Xij[ 0 , 4]: 1.0
my_Xij[ 0 , 5]: 5.0

my_Xij[ 3 , 0]: 1.0
my_Xij[ 3 , 1]: 1.0
my_Xij[ 3 , 2]: 5.0
my_Xij[ 3 , 3]: 1.0
my_Xij[ 3 , 4]: 1.0
my_Xij[ 3 , 5]: 5.0


我想得到这样一个list结果

sumOfRow = {14,14}括号里的每个数字都分别代表上面数组每个行的和


通过以下方法计算出每一行的和

public ArrayList<Double> getMy_Yij(){
double sum = 0.0;
ArrayList<Double> my_Yij = new ArrayList<Double>();

for (int r=0; r < getMy_Xij().length; r++) {// getMy_Xij()就是上面的二维数组
for (int c=0; c < windowLength; c++) {
sum = sum + getMy_Xij()[r][c]; //计算出每个列的和
}
my_Yij.add(sum);//将每一列的和作为元素存入到一个list里
sum = 0.0;
System.out.println("my_Y[" + r + "][1] = " + my_Yij.get(r) );
}

return my_Yij;
}


出来的结果显示很多0,我只需要一个关于每行的和组成的list
...全文
336 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qybao 2012-03-02
  • 打赏
  • 举报
回复
LZ的意思就是和为0的行不要吧
这样的话,可以过滤一下和为0的行就可以了
public ArrayList<Double> getMy_Yij(){
double sum = 0.0;
ArrayList<Double> my_Yij = new ArrayList<Double>();

for (int r=0; r < getMy_Xij().length; r++) {// getMy_Xij()就是上面的二维数组
for (int c=0; c < windowLength; c++) {
sum = sum + getMy_Xij()[r][c]; //计算出每个列的和
}
if (sum != 0) { //加个if,判断非0的行才保存就可以了
my_Yij.add(sum);//将每一列的和作为元素存入到一个list里
}
sum = 0.0;
System.out.println("my_Y[" + r + "][1] = " + my_Yij.get(r) );
}

return my_Yij;
}



qqhw123 2012-03-02
  • 打赏
  • 举报
回复

public ArrayList<Double> getMy_Yij(){
double sum = 0.0;
ArrayList<Double> my_Yij = new ArrayList<Double>();

for (int r=0; r < getMy_Xij().length; r++) {// getMy_Xij()就是上面的二维数组
double[] tList = getMy_Yij()[r];
for (int c=0; c < tList.length; c++) {
sum += tList[c]; //计算出每个列的和
}
my_Yij.add(sum);//将每一列的和作为元素存入到一个list里
sum = 0.0;
System.out.println("my_Y[" + r + "][1] = " + my_Yij.get(r) );
}

return my_Yij;
}




不知道能不能满足你的要求
qqhw123 2012-03-02
  • 打赏
  • 举报
回复
getMy_Xij()你这个是数组的名称吗??
怎么像一个方法呀?
按照你输出的,你的长度成了20.
你仔细看看,应该是4就对了。
LB4229 2012-03-02
  • 打赏
  • 举报
回复

public ArrayList<Double> getMy_Yij(){
double sum = 0.0;
ArrayList<Double> my_Yij = new ArrayList<Double>();
//int counter = 0;
for (int r=0; r < getMy_Xij().length; r++) {// getMy_Xij()就是上面的二维数组
for (int c=0; c < windowLength; c++) {
sum = sum + getMy_Xij()[r][c]; //计算出每个列的和
}

if (sum != 0) { //加个if,判断非0的行才保存就可以了
my_Yij.add(sum);//(java.lang.Math.tanh(sum));//将每一列的和作为元素存入到一个list里
}
sum = 0.0;
}
for(int i = 0; i < my_Yij.size();i++){

System.out.println( "My_Yij.get( " +i + ") = " + my_Yij.get(i));
}
return my_Yij;
}



搞定了,真是太感谢楼上两位啦
LB4229 2012-03-01
  • 打赏
  • 举报
回复

上面code出来的结果如下
run:
my_Y[0][1] = 14.0
my_Y[1][1] = 0.0
my_Y[2][1] = 0.0
my_Y[3][1] = 14.0
my_Y[4][1] = 0.0
my_Y[5][1] = 0.0
my_Y[6][1] = 14.0
my_Y[7][1] = 0.0
my_Y[8][1] = 0.0
my_Y[9][1] = 22.0
my_Y[10][1] = 0.0
my_Y[11][1] = 0.0
my_Y[12][1] = 30.0
my_Y[13][1] = 0.0
my_Y[14][1] = 0.0
my_Y[15][1] = 0.0
my_Y[16][1] = 0.0
my_Y[17][1] = 0.0
my_Y[18][1] = 0.0
my_Y[19][1] = 0.0
BUILD SUCCESSFUL (total time: 1 second)


但是我只想要


my_Y[0][1] = 14.0
my_Y[1][1] = 14.0
my_Y[2][1] = 14.0
my_Y[3][1] = 22.0
my_Y[4][1] = 30.0
怎么弄啊,急人啊

58,454

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧