遇到数组方法问题

时间:2017-02-28 02:25:55

标签: java arrays

编写一个名为createDoubles的方法,该方法构建一个浮点值数组,表示从10.0到13.0的数字的平方,步长为0.5,包括两个边界。该方法没有参数,并返回一个双精度数组。这个数组中只有7个数字。 我一直在尝试坚果什么都没有用。谢谢!

public static double[] createDoubles(){
    double[] dArray= new double[7];
    double[] squareArray= new double[dArray.length];

    for(int i= 0; i< dArray.length-1; i+=0.5){

        squareArray[i]= dArray[i]* dArray[i];
    }
    return squareArray;
}

7 个答案:

答案 0 :(得分:1)

如果用0.5递增i,你如何期望数组索引在循环中工作?请你仔细检查一下代码。

答案 1 :(得分:1)

这样的东西会起作用。想法是数组索引以1为步长递增而不是0.5,因为您的循环期望。

public static double[] createDoubles(){
    double[] dArray= {10.0,10.5,11.0,11.5,12.0,12.5,13.0};
    double[] squareArray= new double[dArray.length];
    for(int i= 0; i< dArray.length; i++){
        squareArray[i]= dArray[i]* dArray[i];
    }
    for(double f: squareArray)
        System.out.println(f);
    return squareArray;
}

答案 2 :(得分:1)

尝试以下方式:

public static double[] createDoubles(){
  double[] squareArray= new double[7];
  double number = 10.0;
  int i=0;
  while(number <= 13.0) {
     squareArray[i] = number*number;
     number = number + 0.5;
     i++; 
  }
}
return squareArray;

答案 3 :(得分:0)

您可以看到以下演示:

int i = 0;
i = i + 0.5;

我永远是0。 这意味着你调用它时你的方法不会停止。

答案 4 :(得分:0)

这是一种方法,但可能不是老师想要的:

public static double[] createDoubles() {
   double[] answer = {10.0, 10.5, 11.0, 11.5, 12.0, 12.5, 13.0 );
    // Actually, the above values should be 100,m ... 169.
    // but I'm too laze to do the math
   return answer;
}

请注意,将循环索引增加非整数值绝不是一个好主意。如果你尝试增加0.1而不是0.5的方法,你可能会感到惊讶。

答案 5 :(得分:0)

此代码未运行但不起作用的原因是因为java将i+=0.5向下舍入到i+=0,这导致i保持相等为0,你的循环永远不会退出,你的代码根本不做任何事情。要修复代码的这一部分,请将i+=0.5更改为i+=1。但是,由于您没有在方形数组中声明任何内容,因此返回的结果数组只是0。修复此问题,方法是在d数组中定义所需的内容,然后将这些值相乘以创建要返回的数组中的值。或者,您可以简单地声明将每个值放入数组中:

for(int i= 0; i<= dArray.length-1; i+=1){
   squareArray[i]= Math.pow(10 + (0.5*i), 2);
}

答案 6 :(得分:-1)

squareArray[整数+ double ]不是有效的数组索引。 数组索引总是整数。