Hallo zusammen,
ich habe beim Aufruf immer die falsche Zahl bekommen und ich habe keine Ahnung woran der Fehler liegt ??
danke
mein Code sieht so aus :
import java.util.Scanner;
public class Messdaten {
public static double durchschnitt(Scanner sc, String g) {
int j = 0, m = 0, t = 0, z = 0;
Double a = 0.0;
int mJ = 0, mM = 0, mT = 0;
double Temperatur;
double Messwert = 0.0, Gesamtwert = 0.0, durchschnitt = 0.0;
double Maxwert = 0.0;
while (sc.hasNext()) {
j = sc.nextInt();
m = sc.nextInt();
t = sc.nextInt();
Temperatur = sc.nextDouble();
Messwert = sc.nextDouble();
String Typ = sc.next();
if (Typ.equals("Temperatur")) {
a = a + Temperatur;
z++;
Gesamtwert = Gesamtwert + Messwert;
if (Messwert > Maxwert) {
Maxwert = Messwert;
mJ = j;
mM = m;
mT = t;
}
}
}
durchschnitt = Gesamtwert / z;
System.out.println("max. " + g + " (" + durchschnitt + ")" + " am " + mT + "." + mM + "." + mJ);
return durchschnitt;
}
}
das ist meine Aufgabe :
Schreiben Sie eine Klasse Messdaten mit einer Klassenmethode durchschnitt, die einen Scanner sc und eine Zeichenkette g als Argumente annimmt. Die Methode soll über sc eine Reihe von Messwerten zu verschiedenen Messgrößen einlesen. Das zweite Argument g gibt eine Messgröße an. Alle Messwerte zu dieser Größe sollen identifiziert werden, ihr Durchschnittswert soll ermittelt und (als Gleitkommazahl) zurückgegeben werden. Genauer: Die Methode liest wiederholt, bis zum Eingabeende, Eingaben im folgenden Format: 1 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 mit der Messgröße g werden addiert und gezählt. Am Ende wird ihr Durchschnitt ermittelt und als Ergebnis der Methode zurückgegeben. Sie können dabei davon ausgehen, dass wenigstens ein Messwert zu der gewählten Messgröße g in der Eingabe vorliegt. Beispiel: Die Methode werde aufgerufen mit "Temperatur" als Argument für den Parameter g. Die Eingabe sei: 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 p18.2 ` 16.8q{2 “ 17.5. Außerdem soll die Methode auf dem Bildschirm ausgeben, an welchem Tag der maximale Wert für die Messgröße g vorlag und wie hoch dieser Wert war. Die Ausgabe soll folgende Form besitzen (am Beispiel der oben gegebenen Werte), abgeschlossen durch einen Zeilenumbruch: max. Temperatur (18.2) am 15.10.2018 Tritt der höchste Wert mehrfach auf, soll der zuerst gelesene Tag mit diesem Wert ausgegeben werden
ich habe beim Aufruf immer die falsche Zahl bekommen und ich habe keine Ahnung woran der Fehler liegt ??
danke
mein Code sieht so aus :
import java.util.Scanner;
public class Messdaten {
public static double durchschnitt(Scanner sc, String g) {
int j = 0, m = 0, t = 0, z = 0;
Double a = 0.0;
int mJ = 0, mM = 0, mT = 0;
double Temperatur;
double Messwert = 0.0, Gesamtwert = 0.0, durchschnitt = 0.0;
double Maxwert = 0.0;
while (sc.hasNext()) {
j = sc.nextInt();
m = sc.nextInt();
t = sc.nextInt();
Temperatur = sc.nextDouble();
Messwert = sc.nextDouble();
String Typ = sc.next();
if (Typ.equals("Temperatur")) {
a = a + Temperatur;
z++;
Gesamtwert = Gesamtwert + Messwert;
if (Messwert > Maxwert) {
Maxwert = Messwert;
mJ = j;
mM = m;
mT = t;
}
}
}
durchschnitt = Gesamtwert / z;
System.out.println("max. " + g + " (" + durchschnitt + ")" + " am " + mT + "." + mM + "." + mJ);
return durchschnitt;
}
}
das ist meine Aufgabe :
Schreiben Sie eine Klasse Messdaten mit einer Klassenmethode durchschnitt, die einen Scanner sc und eine Zeichenkette g als Argumente annimmt. Die Methode soll über sc eine Reihe von Messwerten zu verschiedenen Messgrößen einlesen. Das zweite Argument g gibt eine Messgröße an. Alle Messwerte zu dieser Größe sollen identifiziert werden, ihr Durchschnittswert soll ermittelt und (als Gleitkommazahl) zurückgegeben werden. Genauer: Die Methode liest wiederholt, bis zum Eingabeende, Eingaben im folgenden Format: 1 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 mit der Messgröße g werden addiert und gezählt. Am Ende wird ihr Durchschnitt ermittelt und als Ergebnis der Methode zurückgegeben. Sie können dabei davon ausgehen, dass wenigstens ein Messwert zu der gewählten Messgröße g in der Eingabe vorliegt. Beispiel: Die Methode werde aufgerufen mit "Temperatur" als Argument für den Parameter g. Die Eingabe sei: 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 p18.2 ` 16.8q{2 “ 17.5. Außerdem soll die Methode auf dem Bildschirm ausgeben, an welchem Tag der maximale Wert für die Messgröße g vorlag und wie hoch dieser Wert war. Die Ausgabe soll folgende Form besitzen (am Beispiel der oben gegebenen Werte), abgeschlossen durch einen Zeilenumbruch: max. Temperatur (18.2) am 15.10.2018 Tritt der höchste Wert mehrfach auf, soll der zuerst gelesene Tag mit diesem Wert ausgegeben werden