0 Daumen
293 Aufrufe

Frage:

Warum bekomme ich immer den falschen Wert?


Code:

import java.util.Scanner;

public class Messdaten {
public static double durchschnitt(Scanner sc, String g) {
  int j = 0, m = 0, t = 0, z = 0;
  int mJ = 0, mM = 0, mT = 0;
  String Groesse = " ";
  double Messwert = 0.0, Gesamtwert = 0.0, durchschnitt = 0.0, Maxwert = 0.0;
  while (sc.hasNext()) {
    j = sc.nextInt();
    m = sc.nextInt();
    t = sc.nextInt();
    Groesse = sc.next();
    Messwert = sc.nextDouble();
    if (Groesse.equals(g)) {
      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;
}
}


und der Fehler ist :

--------------------------------
FEHLER: zuletzt erwarteter und tatsaechlich erhaltener Wert unterscheiden sich
erwartet:
................................
"max. CO2 (3716.5) am 16.8.2012
"
................................
erhalten:
................................
"max. CO2 (3609.4) am 16.8.2012
"
................................

Avatar von

1 Antwort

0 Daumen
warum bekomme ich immer den falschen Wert

Du musst angeben, was die Funktion machen soll.

Wenn du nicht angibst, was die Funktion machen soll, dann darf die Funktion machen was sie will.

Wenn die Funktion machen darf was sie will, dann darfst du dich nicht nachher beklagen, dass sie nicht macht was du willst.

System.out.println("max. " + g + " (" + durchschnitt + ") " + "am " + mT + "." + mM + "." + mJ);

Ich finde es etwas seltsam, dass durchschnitt als max. bezeichnet wird. Aber da die Funktion ja machen darf, was sie will, weiß ich nicht ob das so beabsichtigt ist oder nicht.

Um anzugeben, was eine Funktion machen soll, gibt es sogenannte doc comments.

Beispiel.

/**
* Berechnet den Flächeninhalt eines Rechtecks.
*
* @param a Eine Seitenlänge des Rechtecks.
* @param b Die andere Seitenlänge des Rechtecks.
* @return Flächeninhalt des Rechtecks mit
* Seitenlängen a und b.
*/
public static double berechne(double a, double b) {
return 2*a + 2*b;
}

Hier sieht man deutlich, dass die Funktion nicht das tut, was sie soll. Sie soll den Flächeninhalt eines Rechtecks berechnen, berechnet aber tatsächlich den Umfang.

Avatar von 5,7 k

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community