2017-02-24 18 views
2

私はHomeworkのために与えられたこの課題の問題を解決しようとしています。私は現在立ち往生しており、プログラムを修正する上で私を導く助けに感謝します。互換性のないタイプ:double [] []はdoubleに変換できません

次のように、元の割り当ては次のとおりです。

は、年の各月の最高と最低気温を格納するための二次元配列を使用するプログラムを書きます。 2つの方法を書いてください:1つは平均を計算して返します。もう1つは平均の低い値を計算して返します。あなたのプログラムは、配列のすべての値を出力してから、平均値highと平均値lowを出力する必要があります。

これは私がこれまで組み立てたコードであり、解決できないエラーがあります。 「互換性のないタイプです:ダブル[] [] 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; 
    } 
} 

答えて

4

する必要がありますこのようにエラー

 private static double getData() 

を呼び出そうと "ダブル[] [] doubleに変換することができない変換する。"

をしたがって

 private static double[][] getData() 
に変更
5

あなたの方法private static double getData()でなければなりません。 private static double[][] getData()

0

方法は、あなたが既に配列

 double[][] tempData = getData(); 

を宣言したが、あなたはprivate static double[][] getData()

関連する問題