2017-05-07 3 views
-1

Ich habe 2 verschiedene Probleme, die ich brauche mit in diesem Code, der erste ist in ConvertToFah. Ich muss das Array im Konstruktor verwenden und jedes Doppel mit der Formel konvertieren, um in Fahrenheit (Celsius (der doppelte Wert) * 9.0/5.0 + 32) umzuwandeln und es zurückzugeben (ich bekomme immer einen Fehler wie nicht vom Doppel konvertieren) verdoppeln [] wenn ich es versuche.). Der zweite ist, dass ich maxMonth/minMonth auf jeden Monat setzen muss, der sich im selben Index wie der max/min Wert befindet. (Wenn also das Maximum 10 ist und es sich um Array [3] handelt, wäre der Monat April). Jede Hilfe wäre wunderbar. (BTW habe ich einfach noch nicht toString bekommen, so dass nicht wirklich ein Problem im Moment ist.)Stuck auf meinem Code wegen Arrays

public class Temp { 
private String [] months = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"}; 

public Temp(){ 
    double array[],avg = 0, max = 0, min = 0; 
    String maxMonth= null, minMonth = null; 
    } 
public double convertToFah(double array[]){ 
    for(int index = 0; index < array.length; index++){ 

    } 
} 
public double calAvg(double avg, double array[]){ 
    double sum = 0.0; 

    for(int index = 0; index < array.length; index++){ 
       sum = sum + array[index]; 
    } 

    return avg = sum /array.length; 

} 
public double findMin(double array[], double min, String minMonth){ 
    for (int index = 0; index < array.length; index++) { 
     if (array[index] < min){ 
      min = array[index]; 
     } 
    } 

    return min; 
} 
public double findMax(double array[], double max, String maxMonth){ 
    for (int index = 0; index < array.length; index++) { 
     if (array[index] > max){ 
      max = array[index]; 
      return max; 
     } 
    } 

    return max; 

} 

}

+2

"Ich habe 2 verschiedene Probleme, mit denen ich Hilfe in diesem Code benötige" - bitte fragen Sie nach * einem * Problem per Post, und fügen Sie nur den für dieses Problem relevanten Code ein - bearbeiten Sie Ihren Beitrag, um ein [mcve] aufzunehmen ein Problem. –

+2

Und bitte eigentlich eine Frage stellen. "Ich brauche _X_" ist keine Frage. –

+1

Sie scheinen über Argumente und Rückgabewerte verwirrt zu sein. In der Methode calAvg verwendet die Methode beispielsweise ein Array von Werten als Eingabe (Argument) und soll den Durchschnitt dieser Werte als Ausgabe (Rückgabewert) berechnen. Warum braucht es einen Durchschnittswert als Argument? Auch was convertToFah mit seinem Argument zu tun hat und was es zurückgeben soll. Mein Tipp: Schreiben Sie das Javadoc der Methoden, bevor Sie überhaupt mit der Implementierung beginnen. Beschreibe, was jedes Argument ist und was die Methode zurückgibt. –

Antwort

0

nicht sicher, was ist Ihre zweite Frage ist, aber ich nehme an, Ihre erste Eine besteht darin, die Temperatur zu konvertieren und sie wieder in das Array zu speichern. Versuchen Sie, den folgenden Code:

for(int index = 0; index < array.length; index++){ 
    array[index] = array[index] * 9.0/5.0 + 32; 
} 
+0

Das Problem damit ist, dass ich einen Fehler bekomme, der besagt, dass '' nicht von doppeltem [] zu doppeltem '' oder etwas ähnlichem konvertieren kann. (Edit: nvm musste ich die Methode reparieren, danke für die Hilfe aber!) –

+0

funktioniert gut auf meiner Seite, welche Zeile zeigt den Fehler. –

0

Sie nicht drei Werte zurückgeben können (avg, min, max) in Abhängigkeit von nur "doppelt" zu schreiben, sollten Sie "double []" tun, so dass Sie die zurückkehren Das Gleiche bekommst du. So würde diese Funktion sein:

public double[] convertToFah(double array[]){ 

    double[] fahValue; 

    for(int index = 0; index < array.length; index++){ 
     fahValue[index] = (array[index] * 1.8) + 32; // this is what i found on the internet, as i didn't really get what you wrote 
    } 

    return fahValue; 
} 

Dann für Monate Problem. Wenn ich recht habe, möchten Sie die minimalen und maximalen Werte der Temperatur für die Monate erhalten. Wenn es so ist, dann sind deine Funktionen ziemlich gut gemacht, es gibt nur wenige Fehler.

Hier sind die korrigierten Funktionen:

public double findMin(double array[]){ 

    double min = 999; // I set here the value to a high number to get a smaller one after 

    for (int index = 0; index < array.length; index++) { 

     // if the value is smaller than the previous smallest 
     if (array[index] < min){ 
      min = array[index]; 
     } 
    } 

    return min; 
} 


public double findMax(double array[]){ 

    double max = 0; 

    for (int index = 0; index < array.length; index++) { 
     if (array[index] > max){ 
      max = array[index]; 
      // return max; <- delete this line, let the return after the for function 
     } 
    } 

    return max; 
} 

Wenn Sie weitere Fragen haben, entweder über das, was ich geschrieben habe, entweder etwas anderes, nicht :)

1

Ändern Sie die Rückkehr fragen zögern, public double convertToFah(double array[]) zu double[], weil Sie ein doppeltes Array der Temperatur nach Fahrenheit zurückgeben werden.

public double[] convertToFah(double array[]) // returns double array 

Nun, wenn Sie den Monat mit max/min Temperatur dann ändern Sie Ihre findMin & findMax Methoden erhalten möchten die index von max/min Temperatur zurückkehren, dann können Sie dieses index die month zu finden.

public int findMin(double array[], double min, String minMonth){ 
    int min_index = 0; 
    for (int index = 0; index < array.length; index++) { 
     if (array[index] < min){ 
      min = array[index]; 
      min_index = index; 
     } 
    } 
    return min_index; 
} 

Das Gleiche gilt für findMax ...

public int findMax(double array[], double max, String maxMonth){ 
    int max_index = 0; 
    for (int index = 0; index < array.length; index++) { 
     if (array[index] < max){ 
      max = array[index]; 
      max_index = index; 
     } 
    } 
    return max_index; 
} 

dann können Sie wie minMonth = months[findMin(array, min, minMonth)]; tun die min Monat zu bekommen.