java按其元素划分数组

时间:2011-05-23 21:24:42

标签: java arrays

我想将数组的元素划分为数组的第一个元素,方法工作正常,但最后一个元素没有被分割。

我想我必须使用< = array.length ...,但它显然给了我一个超出绑定异常的数组。如果没有< = length,我该怎么做呢? PS:第一个元素不应该被放弃/考虑,因为它是红利。我的代码如下:

public class Ris
{
    public static void main()
    {
        double[] testResult = {2.0, 3.6, 5.0, 2.0};
        for(int element = 0; element < testResult.length; element++){
            if( testResult[element] > testResult[0]){//excludes 1st element
                testResult[element] = testResult[element] / testResult[0] ;// divides elements by first element 0
            }
          System.out.println(testResult[element]); 

        }
    }
}

5 个答案:

答案 0 :(得分:2)

你正在以糟糕的方式擦拭第一个元素 -

if( testResult[element] > testResult[0]){

跳过不超过第一个元素的所有内容 - 超过2.0

您可能需要测试

if( element > 0){

但你也可以跳过循环

定义中的第一个元素
for(int element = 1; element < testResult.length; element++){

答案 1 :(得分:1)

if( testResult[element] > testResult[0]){//excludes 1st element

你在测试价值,而不是在这里的位置。试试这个:

public class Ris
{
public static void main()
{
    double[] testResult = {2.0, 3.6, 5.0, 2.0};
    for(int element = 1; element < testResult.length; element++){
    testResult[element] = testResult[element] / testResult[0] ;// divides elements by first element 0
      System.out.println(testResult[element]); 

    }
}
}

答案 2 :(得分:1)

而不是:

if( testResult[element] > testResult[0]){//excludes 1st element

您应该使用:

if(element > 0){//excludes 1st element

排除第一个元素。

或者让你的for循环从第1个位置开始(跳过第0个位置):

for(int element = 1; element < testResult.length; element++)

答案 3 :(得分:0)

要排除第一个元素,你应该从1开始计数,而不是0。改为

for (int element = 1; ....

答案 4 :(得分:0)

更一般地说,除了一个数组中的所有变量之外,这是不好的做法 或者使用相同的变量进行输入和输出。 你应该宁愿:

double denominator = 2.0;
double[] inputValues = new double[]{3.6, 5.0, 2.0};
double[] outputValues = new double[inputValues.length];

如果您这样做,for循环现在从元素0开始,并在(<inputValues.length之前结束,这通常是for的方式循环是建立的。