Ich muss eine Schnittstelle implementieren und es in zwei verschiedenen Klassen eins mit Array und eins mit List ausprobieren. In diesen Klassen haben wir verschiedene Methoden hinzufügen, wie in der Schnittstelle zu sehen ->Implementieren von Interface und Ausprobieren mit Array und List - Java
public interface IStatistics {
public void addSample(String name, GregorianCalendar date, double value);
public double getMeanTemperature(int month);
public double getMedianTemperature(int month);
public double getVariance(int month);
public double getStandardDeviation(int month);
public void printSamples(int month);
}
Ich habe schon das meiste davon gemacht, aber es sollte nur die Werte eines bestimmten Monats verwenden, die nicht in den beiden Methoden funktioniert . In dieser Übung erhalten wir jeden Tag einen bestimmten Wert (Name, Datum, Temperatur). Ich weiß nicht, wie man es schafft, nur die Werte von einem Monat zu verwenden (was in beiden Klassen nicht funktioniert). In der Liste habe ich es schon ausprobiert, aber es funktioniert überhaupt nicht.
@Override
public double getMeanTemperature(int month) {
MeasurementValue m = this.head;
double result = 0;
while(m.date.get(GregorianCalendar.MONTH)==month){
while(m!=null){
result = result + m.temp;
m=m.getNext();
}
result = result/this.num;
}
return result;
}
Und in der Klasse mit Array weiß ich nicht einmal, wie ich anfangen soll.
@Override
public double getMeanTemperature(int month) {
double sum = 0.0;
for(double a : values)
sum += a;
return sum/numValues;
}
Auch es druckt die Daten nicht korrekt aus. Vielleicht kennt jemand eine Lösung dafür.
import java.util.GregorianCalendar;
import kwm.statistics.IStatistics;
import kwm.statistics.MeasurementArray;
import kwm.statistics.MeasurementList;
public class TestStatistics {
public static void main(String[] args) {
GregorianCalendar date = new GregorianCalendar(2017,05,12);
GregorianCalendar date1 = new GregorianCalendar(2017,05,02);
GregorianCalendar date2 = new GregorianCalendar(2017,05,22);
GregorianCalendar date3 = new GregorianCalendar(2017,06,06);
GregorianCalendar date4 = new GregorianCalendar(2017,05,18);
// ***TESTLIST***
IStatistics statistics1 = new MeasurementList();
statistics1.addSample("Lisa", date, 12);
statistics1.addSample("Lisa", date1, 17);
statistics1.addSample("Lisa", date2, 14);
statistics1.printSamples(5);
// ***TESTARRAY***
IStatistics statistics2 = new MeasurementArray();
statistics2.addSample("Lisa", date, 12);
statistics2.addSample("Lisa", date1, 5);
statistics2.addSample("Lisa", date2, 40);
statistics2.addSample("Lisa", date3, 31);
statistics2.addSample("Lisa", date4, 23);
statistics2.printSamples(5);
}
}
, dass der Code für die Ausgabe in MeasurementValue ist
public void output(){
GregorianCalendar date = this.date;
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
System.out.print(sdf.format(date.getTime()));
}
Und der Code für die Ausgabe in MeasurementList.
public void printSamples(int month) {
MeasurementValue m = this.head;
// while(m.date.get(GregorianCalendar.MONTH)==month){
while(m != null){
if(month>=0 && 11>=month){
System.out.println("Name: "+m.getName());
System.out.println("Value: "+m.getTemp());
System.out.print("Date: ");m.output();
System.out.print("\n");
System.out.print("*****************\n\n");
m = m.getNext();
}
}
// }
System.out.print("\n");
}
Danke für jede Hilfe!
Zu viel Code. Bitte erstellen Sie ein [MCVE] (https://stackoverflow.com/help/mcve). Mit einem Schwerpunkt auf ** minimal **. – Turing85
Niemand hier wird eine Codewand lesen. – OldProgrammer
oder Debug es für die Angelegenheit – redFIVE