不兼容的类型:double [] []无法转换为double

时间:2017-02-24 23:03:13

标签: java arrays

我正在努力为这项作业解决一个问题。我目前感到困惑,并希望能够指导我纠正该计划的任何帮助。

原始作业如下:

  

编写一个程序,使用二维数组存储一年中每个月的最高和最低温度。写两种方法:一种是计算并返回平均值,一种是计算并返回一年中的平均值。你的程序应输出数组中的所有值,然后输出平均值和平均值。

这是我到目前为止收集的代码,并且有一个我无法解决的错误。它是"不兼容的类型:转换double [] []不能转换为double。有问题的行是第8行和第110行(程序中的最后一行)。

import java.util.*;

public class Weather
{
 public static void main(String[] args)
  {

   double[][] tempData = getData();
   printTempData(tempData);  
   double avgHigh = averageHigh(tempData);
   double avgLow = averageLow(tempData);
   int indexHigh = indexHighTemp(tempData);
   int indexLow= indexLowTemp(tempData);

   System.out.format("The average high temperature is %4.1f%n", avgHigh);
   System.out.format("The average low temperature is %4.1f%n", avgLow);
   System.out.format("The index of high temperature is %2d%n", indexHigh);
   System.out.format("The index of low temperature is %2d%n", indexLow);

  }

 private static void printTempData(double[][] tempData)
  {
    System.out.format("%6s:%4s%4s%4s%4s%4s%4s%4s%4s%4s%4s%4s%4s%n","Month","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
    System.out.format("%6s:","Low");

   for (int i = 0; i < tempData[0].length;i++)
   {
    System.out.format("%4.1s", tempData[0][i]);
   }
  System.out.format("%n");
  System.out.format("%6s: ","High"); 
   for (int i = 0; i < tempData[1].length; i++)
   {
     System.out.format("%4.1f", tempData[1][i]);
   }
  System.out.format("%n");
}

private static int indexLowTemp(double[][] tempData)
 {
  int index = 0;
  double temp = tempData[0][0];

    for (int i = 0; i < tempData[0].length; i++)
     {
        if (temp > tempData[0][i])
           { 
            temp = tempData[0][i];
            index = i;
            }
      }
       return index +1;
 }

private static int indexHighTemp(double[][] tempData)
  {
  int index = 0;
  double temp = tempData[1][0];
     for(int i = 0; i< tempData[1].length; i++)
        {
         if ( temp < tempData[1][i])
           {
            temp = tempData[1][i];
            index = i;
           }
        }

        return index + 1;
  }

 private static double averageHigh(double[][] tempData)
  {
   double avg = 0.0;
     for(int i=0; i < tempData[0].length; i++)
       {
        avg += tempData[0][i];
       }

     avg /= tempData[0].length;

     return avg;
  }

  private static double averageLow(double[][] tempData)
   {
   double avg = 0.0;
     for(int i=0; i > tempData[1].length; i++)
       {
        avg += tempData[0][i];
       }

     avg /= tempData[0].length;

     return avg;
  }


 private static double getData()
 {
  double[][] tempData = new double[2][12];
  Random r = new Random();

     for (int j = 0; j < tempData[0].length; j++)
     {
        tempData[0][j] = 30 + Math.sqrt(j) - r.nextDouble();
        tempData[1][j] = 30 + Math.sqrt(j) + r.nextDouble();
     }

    return tempData;
  }
}

3 个答案:

答案 0 :(得分:5)

您的方法private static double getData()应为private static double[][] getData()

答案 1 :(得分:4)

您已经声明了一个数组

      double[][] tempData = getData();

但你正试着打电话

       private static double getData()

因此错误“转换double [] []无法转换为double。”

因此改为

       private static double[][] getData()

答案 2 :(得分:0)

该方法应为private static double[][] getData()