2015-11-09 3 views
-3
import java.io.*; 
import java.util.*; 
public class HeatIndex 
{ 
    public static double [] loadKeyWestTemp() throws IOException//method to read temp text file and convert to an array 
{ 
    Scanner inFile = new Scanner(new File("KeyWestTemp.txt")); 
    List<Double> array = new ArrayList<>(); 
    while(inFile.hasNext()){ 
     array.add(inFile.nextDouble()); 
    } 
    double t[] = new double[array.size()]; 
    for(int i = 0; i < array.size(); i++){ 
     t[i] = array.get(i); 
    } 
    inFile.close(); 
    return t; 
} 

public static double [] loadKeyWestHumidity() throws IOException//method to read humidity text file and convert to array 
{ 
    Scanner inFile = new Scanner(new File("KeyWestHumid.txt"));//finding text file 
    List<Double> array = new ArrayList<>();//initializing Array List 
    while(inFile.hasNext()){//while-loop to fill array list 
     array.add(inFile.nextDouble()); 
    } 
    double h[] = new double[array.size()];//assigning array list values to the h[] array 
    for(int z = 0; z < array.size(); z++){ 
     h[z] = array.get(z); 
    } 
    inFile.close();//closing inFile 
    return h;//returning h[] 
} 
public static double heatIndex(double t, double h){//method to calculate the Heat Index formula{ 
    //declaring variables that are a part of the Heat Index formula 
    double H1 = -42.379; 
    double H2 = 2.04901523; 
    double H3 = 10.14333127; 
    double H4 = 0.22475541; 
    double H5 = 6.83783 * .001; 
    double H6 = -5.481717 * .01; 
    double H7 = 1.22874 * .001; 
    double H8 = 8.5282 * .0001; 
    double H9 = 1.99 * 000001; 
    //the actual formula 
    double index = (H1) + (H2*t) + (H3 * h) + (H4 * t * h) + (H5 * (t * t)) + (H6 * (h * h)) + (H7 *(t * t)*h) + (H8 * t *(h * h)) + (H9 * (t * t)*(h * h)); 
    return index; 
} 
public static void main(String[]args)throws IOException {//main method 
    for(int y = 0; y < 11; y++){ 
     double HI [] = heatIndex(loadKeyWestTemp(),loadKeyWestHumidity()); 
     } 
    } 
} 

Я пишу программу, которая считывает проценты температуры и влажности из двух текстовых файлов, а затем использует значения внутри найдите индекс тепла из этих значений. Я получаю сообщение об ошибке в строке: double HI [] = heatIndex (loadKeyWestTemp(), loadKeyWestHumidity()); В нем говорится, что мне не разрешено использовать метод, который содержит удвоения с double []. Есть ли способ исправить это, не переписывая основные части моей программы? Спасибо!Метод (двойной, двойной) не применим для аргументов (double [], double [])

+3

Как вы думаете, что означает ошибка? Как вы думаете, какая разница между значением типа 'double' и значением типа' double [] '? –

+4

Исключение говорит вам точно, что не так - не вызывайте метод, передавая массивы, а передавайте двойные аргументы. –

+1

С первого взгляда, похоже, вы хотите использовать метод heatIndex для каждого соответствующего элемента? Для этого вам нужно будет сохранить два отдельных 'double []' s и написать цикл 'for' для вызова' heatIndex' для каждого соответствующего элемента каждого массива. –

ответ

1

Вы должны индексировать элементы в двойной массив:

double kwt = loadKeyWestTemp(); 
double kph = loadKeyWestHumidity(); 
double HI = new double[kwt.length]; 

for(int y = 0; y < 11; y++){ 
    HI[y] = heatIndex(kit[y], kph[y]); 
} 

Это предполагает, что эти два метода возвращают массивы один и тот же размер (11).

Смежные вопросы