Java方法将十进制值的数组列表乘以一组双打以获取ints数组



帮助!我有这个学校作业,希望我写一种方法来通过将宽度(阵列)乘以长度(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));

最新更新