帮助!我有这个学校作业,希望我写一种方法来通过将宽度(阵列)乘以长度(doubles and a double)来找到矩形(INT阵列)的区域(ints数组)。我非常新的编码;我已经尝试了五个多小时才能使此操作,但是我一直在做错事,我根本无法做到这一点。这是我写过的方法的代码:
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
非常感谢您提供的任何帮助,您可以为我写下此方法提供。我已经工作了几个小时,但我无法得到它...
数组的长度和大小的数组列表应该相同,并且您必须稍微更改方法逻辑,请查看以下代码代码段
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;
}
调用此方法传递宽度阵列和长度数组。它将返回ints的区域
您在这里真的不需要两个循环。假设宽度[1]与长度[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;
}
}
同样,上面的代码假定集合的大小相同。
首先,您不需要分配临时变量:
double temp = length[index];
...
Object widthObj = (int)width.get(index);
因为您只会引用一次。而是直接引用它们:
area[index] = length[index] * (int)width.get(index);
其次,您的循环是不必要的,他们被宣布为错误。您正在尝试将传递给会导致问题的功能传递给功能的索引(和两次)。如果要使用嵌套进行循环,则会为它们声明一个新的迭代变量:
for (int i = 0; i < something; i++) {
for (int j = 0; j < somethingElse; j++) {
doSomething();
}
}
但是,在这种情况下,您甚至不需要它们。
此外,当您要施放INT时,您不应创建一个对象:
Object widthObj = (int)width.get(index);
应该是
int width = (int)width.get(index);
但是,这条线是不必要的,您不应该尽早施放INT。
最终,您要做的就是一行:
area[index] = (int)(length[index] * width.get(index));