我的方法为返回的数组中的每个值返回相同的值

时间:2013-10-30 12:03:37

标签: java arrays

所以..在我的程序中,我已经构建了一个方法,它从数组中取两个值并将它们相乘,然后它必须将值保存到数组中。然后我再次执行此操作,而不是保存第二个值在下一个数组位置,它似乎将它保存在每个位置。我认为在我的方法中使用我的循环是非常错误的。我希望每个计算值都保存在数组中(至少那个点),最后是把它们打印出来?现在程序打印出来:

4200 4200 4200 4200 4200 4200

任何帮助都会受到赞赏。我是Java新手。

public class TestingN
{
    public static void main(String[] args) 
    {
            int [] initialMarks = new int [4];
            int [] result = new int [2];
            initialMarks[0] = 40;
            initialMarks[1] = 60;
            initialMarks[2] = 60;
            initialMarks[3] = 70;
            result = computedMarks(initialMarks[0], initialMarks[1]);
            result = computedMarks(initialMarks[2], initialMarks[3]);
            for(int i=0; i< result.length; i++)
                  System.out.println(result[i]);
    }
            public static int [] computedMarks(int mark1, int mark2) 
          { 
                int [] i= new int [6];
                for (int j = 0; j < i.length; j++)
                {                   
                    if ((mark1 < 35 && mark2 > 35) || (mark1 > 35 && mark2 < 35))
                    {
                        i[j] = 35;
                    }
                    else
                    {
                        i[j] = (mark1 * mark2);
                    }
                }
              return i;
          }
}

4 个答案:

答案 0 :(得分:1)

试试这个,这应该有效。您不需要在计算方法Marks

上有一个数组
 public static void main(String[] args) 
        {
                int [] initialMarks = new int [4];
                int [] result = new int [2];
                initialMarks[0] = 40;
                initialMarks[1] = 60;
                initialMarks[2] = 60;
                initialMarks[3] = 70;
                result[0] = computedMarks(initialMarks[0], initialMarks[1]);
                result[1] = computedMarks(initialMarks[2], initialMarks[3]);
                for(int i=0; i< result.length; i++){
                    System.out.println(result[i]);
                }

  } public static int computedMarks(int mark1, int mark2) 
  { 
      int i = 0;
      {                   
          if ((mark1 < 35 && mark2 > 35) || (mark1 > 35 && mark2 < 35))
          {
              i = 35;
          }
          else
          {
              i = (mark1 * mark2);
          }
      }
    return i;
}

答案 1 :(得分:0)

修改代码(result = computedMarks(initialMarks [0],initialMarks [1]);)如下所示

 result[0] = computedMarks(initialMarks[0], initialMarks[1])[0];
 result[1] = computedMarks(initialMarks[2], initialMarks[3])[0];

答案 2 :(得分:0)

if ((mark1 < 35 && mark2 > 35) || (mark1 > 35 && mark2 < 35))

设置值

时,这将始终为false
        initialMarks[0] = 40;
        initialMarks[1] = 60;
        initialMarks[2] = 60;
        initialMarks[3] = 70;

因此else子句将是唯一执行的行。

答案 3 :(得分:0)

首先,您使用

覆盖result变量
        result = computedMarks(initialMarks[0], initialMarks[1]);
        result = computedMarks(initialMarks[2], initialMarks[3]);

这样,您的第一个computedMarks来电将被第二次通话删除。如果您想查看这两个结果,可以使用以下代码:

        result = computedMarks(initialMarks[0], initialMarks[1]);
        for(int i=0; i< result.length; i++)
        System.out.println(result[i]);

        result = computedMarks(initialMarks[2], initialMarks[3]);
        for(int i=0; i< result.length; i++)
        System.out.println(result[i]);

其次,您在main的开头创建了一个2单元格数组,但在computedMarks中有一个new int [6]语句。该程序的输出是6个单元格数组,其值6070乘以该句子的6倍:

} else {
    i[j] = (mark1 * mark2);
}

它始终输入else部分,因为参数为6070,永远不会填满if ((mark1 < 35 && mark2 > 35) || (mark1 > 35 && mark2 < 35))

所以最后你在6个单元阵列的每个单元格中得到60 * 70