首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用协作线程添加2D数组

使用协作线程添加2D数组
EN

Stack Overflow用户
提问于 2018-06-04 03:38:13
回答 2查看 69关注 0票数 0

我正在尝试使用协作线程添加一个2D数组。但我只得到了最后一条线的答案。我只有3条线。我的代码是:

代码语言:javascript
复制
public class Arr2DThreadAdd {
static int[ ] [ ] arr2D ={{10, 20, 30, 40}, {11, 12, 13, 14}, {12, 13, 14, 15}};
static int[ ] result = new int[3];

static class job extends Thread{
    int arr2Mindex;

    job(int index){
      arr2Mindex= index;     
   }
    public void run(){
       int i;
       int sum=0;


        for( i=0;i<4; ++i)
            sum = sum +arr2D[arr2Mindex][i];

        result[arr2Mindex]= sum;

    }
}


    public static void main(String[] args) {
        job[] obj = new job[3];
        for(int i=0; i<3; ++i){
            obj[i]= new job(i);
            obj[i].start();
            try{
                obj[i].join();
            }catch (Exception e) {
                  e.printStackTrace();
             }
        }
    String res="";

   for( int j= 0; j<3; ++j)
      res = result[j] + " ";
   JOptionPane.showMessageDialog(null, res);
    }

}

现在我只得到54,这是二维数组的最后一个e,例如{12, 13, 14, 15}的正确答案。

当我检查以下行时:

代码语言:javascript
复制
obj[i]= new job(i); 

通过传递如下的值

代码语言:javascript
复制
obj[i]= new job(0); 

代码语言:javascript
复制
obj[i] = new job(1); 

在上述两种情况下,我都得到了零。然而,当我键入:

代码语言:javascript
复制
obj[i] = new job(2);

我拿到了54.

请有人指点我代码中的问题是什么。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-04 03:57:01

您正在覆盖结果值,而不是在循环中添加结果值。

变化

代码语言:javascript
复制
res = result[j] + " ";

代码语言:javascript
复制
res = res + result[j] + " ";

你就会得到所有的结果。

票数 0
EN

Stack Overflow用户

发布于 2018-06-04 04:12:50

错误是,您没有将其附加到现有的字符串中,而是替换它,因此只有最后一个值保留在末尾。就这样改变它,

代码语言:javascript
复制
for (int j = 0; j < 3; ++j)
    res += result[j] + " ";
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50673124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档