帮助!我有这个学校作业,希望我通过将宽度(一个ArrayList)乘以长度(一个双精度数组)来编写一个方法来找到矩形区域(一个整数数组)。我对编码非常陌生;我已经尝试了超过五个小时才能使这个工作,但我一直做错了,我根本无法做到这一点。这是我写的方法的代码:
public void calcRectangleArea(int index, ArrayList width, double[] length, int[] area)
{
double temp = length[index];
for(index = 0; index < length.length; index++)
{
for(index = 0; index < width.size(); index++)
{
Object widthObj = (int)width.get(index);
area[index] = temp * widthObj;
}
}
}
我们获得的完整入门代码就在这里,如果您需要更多上下文(已注释):http://pastie.org/pastes/916496
非常感谢您在撰写此方法时可以给我的任何帮助。我已经工作了好几个小时而且我无法得到它......
答案 0 :(得分:0)
数组的长度和arraylist的大小应该是相同的,你必须稍微改变方法逻辑,看看下面的代码片段
public static int[] calcRectangleArea(List<Double> width, double[] length)
{
int[] area=new int[length.length];
for(int index = 0; index < length.length; index++)
{
area[index] = (int) (length[index]*width.get(index));
}
return area;
}
调用此方法传递width arraylist和length数组。它将返回整数区域数组
答案 1 :(得分:0)
你真的不需要两个循环。假设width [1]与length [1]相关,你可以在同一个循环中同时遍历两个集合。
这应该有用(我在〜2年内没有写过一行java,所以可能不是100%)
public void calcRectangleArea(int index, ArrayList width, double[] length, int[] area)
{
//assuming length.length == width.size
for(index = 0; index < length.length; index++)
{
int anArea = (int)(width.get(index) * length[index]);
area[index]=anArea;
}
}
上面的代码再次假设集合的大小是相同的。
答案 2 :(得分:0)
首先,您不需要分配临时变量:
double temp = length[index];
...
Object widthObj = (int)width.get(index);
因为你只会引用一次。直接引用它们:
area[index] = length[index] * (int)width.get(index);
其次,你的for循环是不需要的,并且声明它们是错误的。你试图增加传递给函数的索引(以及两次),这将导致问题。如果您要使用嵌套for循环,则应为每个循环声明一个新的迭代器变量:
for (int i = 0; i < something; i++) {
for (int j = 0; j < somethingElse; j++) {
doSomething();
}
}
然而,在这种情况下,你甚至不需要它们。
此外,当你想要转换int:
时,你不应该创建一个ObjectObject widthObj = (int)width.get(index);
应该是
int width = (int)width.get(index);
然而,这一行是不必要的,你不应该这么早地转换为int。
最终,您需要做的只是一行:
area[index] = (int)(length[index] * width.get(index));