所以..在我的程序中,我已经构建了一个方法,它从数组中取两个值并将它们相乘,然后它必须将值保存到数组中。然后我再次执行此操作,而不是保存第二个值在下一个数组位置,它似乎将它保存在每个位置。我认为在我的方法中使用我的循环是非常错误的。我希望每个计算值都保存在数组中(至少那个点),最后是把它们打印出来?现在程序打印出来:
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;
}
}
答案 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个单元格数组,其值60
和70
乘以该句子的6倍:
} else {
i[j] = (mark1 * mark2);
}
它始终输入else
部分,因为参数为60
和70
,永远不会填满if ((mark1 < 35 && mark2 > 35) || (mark1 > 35 && mark2 < 35))
。
所以最后你在6个单元阵列的每个单元格中得到60 * 70
。