Hallo,
in dieser von mir ersten Frage im Forum, wollte ich fragen ob jemand mir bei dieser unten beigefügten Aufgabe helfen kann.
Ich habe mich bereits selber am Problem versucht und alles funktioniert meiner Meinung nach bisher, bis auf das Maximum und Minimum bei den Werten finden. Also ich habe einige Testausgaben gemacht und die einzigen gravierenden Logikfehler die mir aufgefallen sind bisher sind die oben genannte Probleme, Syntaxfehler gibt es offensichtlicherweise keine, da sich das Programm problemlos compilieren lässt.
Zusammenfassung der Aufgabenstellung (unten nochmal in Spoiler die Original Aufgabe beigefügt):
Dieses Programm berechnet den durchschnittlichen Säuregehalt vom Kaffee (Säuregehaltwerte in einem Array als Datentyp double gespeichert).
Dann sucht es nach dem Wert welcher am weitesten von diesem Durchschnitt entfernt liegt, diesen entfernt das Programm. Die Aufgabenstellung verlangte desweiteren den entfernten Wert auf - 1 zu setzen und damit dann den Durchschnitt neu zu berechnen und auszugeben.
[Java]
package edu.kit.informatik;
/**
* This class is simply an exercise task from:
* Programmieraufgaben
* and just there so that I can practice the "basics" of Java more
* Nothing exciting here so let's move on
*
* @author Pornmaniac
* @version 1.0
*/
public class KaffeeDurchschnitt {
/**
* This is the main method and pretty self-explaining
*
* @param args
* contains the supplied command-line arguments as an array of String object
*/
public static void main(String[] args) {
double[] saeuregehalt = {5.6, 6.2, 6.0, 5.5, 5.7, 6.1, 7.4, 5.5, 5.5, 6.3,
6.4, 4.0, 6.9};
double durchschnitt = 0;
double durchschnittE = 0;
double wertE;
for (int i = 0; i < saeuregehalt.length; i++) {
durchschnitt = durchschnitt + saeuregehalt;
}
durchschnitt = durchschnitt / saeuregehalt.length;
System.out.println("Durchschnitt: " + durchschnitt);
for (int i = 0; i <= saeuregehalt.length - 1; i++) {
double max = saeuregehalt[0];
double min = saeuregehalt[0];
if (max < saeuregehalt) {
max = saeuregehalt;
}
if (min > saeuregehalt) {
min = saeuregehalt;
}
double maxE = max;
double minE = min;
maxE = maxE - durchschnitt;
minE = durchschnitt - minE;
if (i == saeuregehalt.length - 1) {
if (maxE >= minE) {
wertE = max;
System.out.println("Entferntester Wert: " + wertE);
wertE = -1;
durchschnittE = durchschnitt - wertE;
System.out.println("Der neue Durchschnitt: " + durchschnittE);
} else {
wertE = min;
System.out.println("Entferntester Wert: " + wertE);
wertE = -1;
durchschnitt = durchschnitt - wertE;
System.out.println("Der neue Durchschnitt: " + durchschnittE);
}
}
}
}
}
[/Java]
Da ich noch Java Anfänger bin würde ich desweiteren noch fragen ob jemand erfahrerenes etwas zu meinem Programmierstil sagen kann. Schlecht, gut, normal und das Wichtigste wären eben Verbesserungsvorschläge.
Obwohl mein persönlicher im Moment mehr Kommentare sind um die Übersicht meines Codes zu verbessern (allerdings bin ich aber gerade etwas genervt da ich seit mehreren Minuten einfach den Fehler in meinem Programm nicht finden kann, weswegen ich erstmal etwas anderes mache und einfach mal im Forum nachfragen wollte)
Ich wünsche ansonsten noch einen schönen Tag und danke schonmal vielmals.
in dieser von mir ersten Frage im Forum, wollte ich fragen ob jemand mir bei dieser unten beigefügten Aufgabe helfen kann.
Ich habe mich bereits selber am Problem versucht und alles funktioniert meiner Meinung nach bisher, bis auf das Maximum und Minimum bei den Werten finden. Also ich habe einige Testausgaben gemacht und die einzigen gravierenden Logikfehler die mir aufgefallen sind bisher sind die oben genannte Probleme, Syntaxfehler gibt es offensichtlicherweise keine, da sich das Programm problemlos compilieren lässt.
Zusammenfassung der Aufgabenstellung (unten nochmal in Spoiler die Original Aufgabe beigefügt):
Dieses Programm berechnet den durchschnittlichen Säuregehalt vom Kaffee (Säuregehaltwerte in einem Array als Datentyp double gespeichert).
Dann sucht es nach dem Wert welcher am weitesten von diesem Durchschnitt entfernt liegt, diesen entfernt das Programm. Die Aufgabenstellung verlangte desweiteren den entfernten Wert auf - 1 zu setzen und damit dann den Durchschnitt neu zu berechnen und auszugeben.
[Java]
package edu.kit.informatik;
/**
* This class is simply an exercise task from:
* Programmieraufgaben
* and just there so that I can practice the "basics" of Java more
* Nothing exciting here so let's move on
*
* @author Pornmaniac
* @version 1.0
*/
public class KaffeeDurchschnitt {
/**
* This is the main method and pretty self-explaining
*
* @param args
* contains the supplied command-line arguments as an array of String object
*/
public static void main(String[] args) {
double[] saeuregehalt = {5.6, 6.2, 6.0, 5.5, 5.7, 6.1, 7.4, 5.5, 5.5, 6.3,
6.4, 4.0, 6.9};
double durchschnitt = 0;
double durchschnittE = 0;
double wertE;
for (int i = 0; i < saeuregehalt.length; i++) {
durchschnitt = durchschnitt + saeuregehalt;
}
durchschnitt = durchschnitt / saeuregehalt.length;
System.out.println("Durchschnitt: " + durchschnitt);
for (int i = 0; i <= saeuregehalt.length - 1; i++) {
double max = saeuregehalt[0];
double min = saeuregehalt[0];
if (max < saeuregehalt) {
max = saeuregehalt;
}
if (min > saeuregehalt) {
min = saeuregehalt;
}
double maxE = max;
double minE = min;
maxE = maxE - durchschnitt;
minE = durchschnitt - minE;
if (i == saeuregehalt.length - 1) {
if (maxE >= minE) {
wertE = max;
System.out.println("Entferntester Wert: " + wertE);
wertE = -1;
durchschnittE = durchschnitt - wertE;
System.out.println("Der neue Durchschnitt: " + durchschnittE);
} else {
wertE = min;
System.out.println("Entferntester Wert: " + wertE);
wertE = -1;
durchschnitt = durchschnitt - wertE;
System.out.println("Der neue Durchschnitt: " + durchschnittE);
}
}
}
}
}
[/Java]
Da ich noch Java Anfänger bin würde ich desweiteren noch fragen ob jemand erfahrerenes etwas zu meinem Programmierstil sagen kann. Schlecht, gut, normal und das Wichtigste wären eben Verbesserungsvorschläge.
Obwohl mein persönlicher im Moment mehr Kommentare sind um die Übersicht meines Codes zu verbessern (allerdings bin ich aber gerade etwas genervt da ich seit mehreren Minuten einfach den Fehler in meinem Programm nicht finden kann, weswegen ich erstmal etwas anderes mache und einfach mal im Forum nachfragen wollte)
Ich wünsche ansonsten noch einen schönen Tag und danke schonmal vielmals.
Angenommen, dass Sie an der Berechnung des durchschnittlichen Säuregehalts von Kaffee intressiert sind, wie er in den Cafés in Ihrer Heimatstadt serviert wird. Sie besuchen viele Cafés und tauchen Ihr pH-Messgerät in Kaffeeproben. Sie zeichnen das Ergebnis in einer Textdatei wie der folgenden auf. Die erste Zeile zeigt die Anzahl der Werte an, die folgen werden.
13
5.6
6.2
6.0
5.5
5.7
6.1
7.4
5.5
5.5
6.3
6.4
4.0
6.9
Allerdings wissen Sie, dass Ihr pH-Messgerät manchmal falsche Ergebnisse liefert. Also entschließen Sie sich den Messwert, der am weitesten vom Durchschnitt entfernt ist, nicht zu berücksichtigen.
Berechnen Sie den Durchschnitt aller Daten. Durchsuchen Sie jetzt das Array, um den Wert zu finden, der am weitesten (in jeder Richtung) vom Durchschnitt entfernt ist. Setzen Sie den Wert auf -1, um anzuzeigen, dass der Wert nicht aufgenommen wird. Berechnen und geben Sie den neuen Durchschnitt aus.
Hier ist ein Ablauf des Programms:
C:\>java KaffeeDurchschnitt < KaffeeDaten.txt
array[ 0 ] = 5.6
array[ 1 ] = 6.2
array[ 2 ] = 6.0
array[ 3 ] = 5.5
array[ 4 ] = 5.7
array[ 5 ] = 6.1
array[ 6 ] = 7.4
array[ 7 ] = 5.5
array[ 8 ] = 5.5
array[ 9 ] = 6.3
array[ 10 ] = 6.4
array[ 11 ] = 4.0
array[ 12 ] = 6.9
Durchschnitt: 5.930769230769231
entferntester Wert: 4.0
neuer Durchschnitt: 6.091666666666668
Hinweis: dies ist eine schwierigere Aufgabe als Sie denken mögen. Ich stelle sie manchmal in den Prüfungen Mitte des Semesters und manche Studenten können sie nicht lösen.
13
5.6
6.2
6.0
5.5
5.7
6.1
7.4
5.5
5.5
6.3
6.4
4.0
6.9
Allerdings wissen Sie, dass Ihr pH-Messgerät manchmal falsche Ergebnisse liefert. Also entschließen Sie sich den Messwert, der am weitesten vom Durchschnitt entfernt ist, nicht zu berücksichtigen.
Berechnen Sie den Durchschnitt aller Daten. Durchsuchen Sie jetzt das Array, um den Wert zu finden, der am weitesten (in jeder Richtung) vom Durchschnitt entfernt ist. Setzen Sie den Wert auf -1, um anzuzeigen, dass der Wert nicht aufgenommen wird. Berechnen und geben Sie den neuen Durchschnitt aus.
Hier ist ein Ablauf des Programms:
C:\>java KaffeeDurchschnitt < KaffeeDaten.txt
array[ 0 ] = 5.6
array[ 1 ] = 6.2
array[ 2 ] = 6.0
array[ 3 ] = 5.5
array[ 4 ] = 5.7
array[ 5 ] = 6.1
array[ 6 ] = 7.4
array[ 7 ] = 5.5
array[ 8 ] = 5.5
array[ 9 ] = 6.3
array[ 10 ] = 6.4
array[ 11 ] = 4.0
array[ 12 ] = 6.9
Durchschnitt: 5.930769230769231
entferntester Wert: 4.0
neuer Durchschnitt: 6.091666666666668
Hinweis: dies ist eine schwierigere Aufgabe als Sie denken mögen. Ich stelle sie manchmal in den Prüfungen Mitte des Semesters und manche Studenten können sie nicht lösen.
Zuletzt bearbeitet von einem Moderator: