0 Daumen
207 Aufrufe

Bitte helfen Sie mir :)

Schreiben Sie eine Klasse Messdaten mit einer Klassenmethode temperaturInDurchschnitt , die einen Scanner als Argumentannimmt. 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








Code:

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;
}
}

von

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community