0 Daumen
1,2k Aufrufe

Aufgabe:

Schreiben Sie eine Klasse Messdaten mit einer Klassenmethode temperaturInDurchschnitt, die einen Scanner als Argument annimmt. Die Methode soll über diesen eine Reihe von Messdaten einlesen, daraus alle Temperaturenangaben auswählen, deren Durchschnittswert ermitteln und als Gleitkommazahl zurückgeben.

Genauer: Die Methode liest wiederholt, bis zum Eingabeende, Eingaben in folgenden Format:

1. drei Ganzzahlen, die Jahr, Monat und Tag beschreiben

2. eine Zeichenkette, die die gemessene Größe beschreibt

3. eine Gleitkommazahl, die den Messwert angibt.


Sie können hier davon ausgehen, dass die Eingaben korrekt sind.

Die Messwerte aller Eingaben zur Größe Temperatur werden addiert und gezählt und abschließend gemittelt. Das Ergebnis wird von der Methode zurückgegeben.

Beispiel:

2018 10  16 Luftdruck 1014.7

2018 10  17 Niederschlag 1. 3

2018 10  15 Temperatur 18.2

2018 10  16 Niederschlag 0.0

2018 10  17 Temperatur 16.8


In diesem Fall wäre das Ergebnis (18.2 + 16.8)/2=17.5

Sie können hier davon ausgehen, dass wenigstens ein Tempreaturmesswert vorliegt.

Außerdem soll die Methode auf em Bildschirm ausgeben, welcher der wärmste Tag war und welche Temperatur an diesem erreicht wurde Die Ausgabe sollfolgende Form besitzen(am Beispiel der oben gegeben Werte), abgeschlossen durch einen Zeilenumbruch:

hoechste Temperatur (18.2) am 15.10.2018

Avatar von

1 Antwort

0 Daumen

import java.util.Scanner;

public class MessDaten {

public static double temperaturInDurchschnitt(Scanner scanner) {
// Variablen für die Ergebnisse
double erg = 0.0;
int hJahr = 0;
int hMonat = 0;
int hTag = 0;
double hWert = 0.0;

// Hilfsvariablen zur Berechnung von erg, und zum finden von Höchsttemperatur
int jahr = 0;
int monat = 0;
int tag = 0;
double wert = 0.0;
String bezeichnung = "";
int zaehler = 0;
while(scanner.hasNextLine()) { // solange noch Zeilen mit Daten folgen
jahr = scanner.nextInt(); // nächstes Jahr einlesen
monat = scanner.nextInt(); // nächsten Monat einlesen
tag = scanner.nextInt(); // nächsten Tag einlesen
bezeichnung = scanner.next(); // nächste Bezeichnung einlesen
wert = scanner.nextDouble(); // nächsten Wert einlesen
// je nach Formatierung der Eingabewerte alternativ: wert = Double.parseDouble(scanner.next());

if (bezeichnung.equals("Temperatur")) { // wenn es sich um eine Temperatur handelt, wert addieren und zaehler erhöhen
erg += wert;
zaehler++;

if (wert > hWert) { // wenn der aktuelle Wert größer als der bisherige Höchstwert ist, die Daten auf des neuen Höchstwerts abspeichern
hWert = wert;
hJahr = jahr;
hMonat = monat;
hTag = tag;
}
}
}

System.out.println("hoechste Temperatur (" + hWert + ") am" + hTag + "." + hMonat + "." + hJahr + ")"); // Ausgabe des Höchstwerts

erg = erg / zaehler; // Durchschnitt berechnen

return erg;
}
}

Avatar von

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community