Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Dies hier ist mein erster Post, ich habe mich gründlich auf google ausgetobt und nirgends eine Hilfestellung gefunden oder ich hab sie nicht kapiert... ich bin also ein blutiger Anfänger..
Folgendes Problem:
Ich muss ein Program erstellen das beliebig viele Startparameter hat und das arithmetische Mittel davon in der Konsole ausgibt.
Das Ausgeben und die beliebig vielen Parameter bekomm ich hin, jedoch begreif ich nicht wie man mit den x parametern rechnet, geschweige denn eine Anzahl der x parameter bekommt.
Bis jetzt habe ich folgendes:
Java:
public class AufgabeF {
public static void main(String[] args){
for (int i = 0; i < args.length; ++i) {
a = ?
System.out.println("Mittelwert der Parameter " +a);
}
}
}
Kann mir jemand eine Hilfestütze geben bitte? ich möchte keinen Lösungscode, wäre aber sehr sehr froh um eine Erklärung wie ich vorgehen soll.
Du bekommst Strings in einem String-Array als Argumente geliefert.
Damit du mit den Zahlenwerten, die als String gespeichert wurden, rechenen kannst, musst du sie in den passenden Datentyp umwandeln (parsen).
Und da ein Array mehrere Werte eines Typs aufnimmt, musst du sie auch einzeln herausholen und parsen.
Die for-Schleife ist dafür gut geeignet.
An die Werte an den index-Positionen eines Arrays kommst du über die Angabe des Indexes.
Daher war dein [c]++i[/c] in der for-Schleife nicht optimal, weil ein Array immer den ersten Wert am Index 0 speichert. Du hättest also den ersten Wert (an Index 0) nie aus dem Array geholt, sondern den an Index 1. [c]++i[/code] bedeutet soviel wie: "Addiere den Wert 1 zu i, bevor du die Anweisung(en) in der for-Schleife ausführst.
An die einzelnen Werte im Array kommst du über den Zähler i.
[c]String str = args;[/c]
Danach musst du den Wert im String parsen und erst danach kannst du mit dem neuen Datentyp rechnen.
Du bekommst Strings in einem String-Array als Argumente geliefert.
Damit du mit den Zahlenwerten, die als String gespeichert wurden, rechenen kannst, musst du sie in den passenden Datentyp umwandeln (parsen).
Und da ein Array mehrere Werte eines Typs aufnimmt, musst du sie auch einzeln herausholen und parsen.
Die for-Schleife ist dafür gut geeignet.
An die Werte an den index-Positionen eines Arrays kommst du über die Angabe des Indexes.
Daher war dein [c]++i[/c] in der for-Schleife nicht optimal, weil ein Array immer den ersten Wert am Index 0 speichert. Du hättest also den ersten Wert (an Index 0) nie aus dem Array geholt, sondern den an Index 1. [c]++i[/code] bedeutet soviel wie: "Addiere den Wert 1 zu i, bevor du die Anweisung(en) in der for-Schleife ausführst.
An die einzelnen Werte im Array kommst du über den Zähler i.
[c]String str = args;[/c]
Danach musst du den Wert im String parsen und erst danach kannst du mit dem neuen Datentyp rechnen.
in deinem Fall nutzt du halt die Zählvariable "i" in der Schleife. Wenn du immer args aufrufst, ist das halt erst der erste Parameter, dann der zweite, der dritte usw.
Diese Werte kannst du einer vorher erstellen Variablen immer dazuaddieren. Dann hast du schon mal die Summe aller Zahlen. Und wieviele Zahlen es waren, das kriegst du ja über args.length.
@L-extron-X
Es ist egal ob er i++ oder ++i schreibt. Die Anweisung wird immer erst nach dem Schleifendurchlauf ausgeführt, bei normalen Schleifen ist es also echt egal wie man das macht, weil sowieso keine weiteren Berechnungen dazwischenliegen.
kann ich aber auch mit der args.length rechnen?
ich versuche mich jetzt an die Summe der eingebeben parametern mit der Hilfe von dem Index... wird ein weilchen dauern aber es macht Sinn.
in deinem Fall nutzt du halt die Zählvariable "i" in der Schleife. Wenn du immer args aufrufst, ist das halt erst der erste Parameter, dann der zweite, der dritte usw.
Diese Werte kannst du einer vorher erstellen Variablen immer dazuaddieren. Dann hast du schon mal die Summe aller Zahlen. Und wieviele Zahlen es waren, das kriegst du ja über args.length.
@L-extron-X
Es ist egal ob er i++ oder ++i schreibt. Die Anweisung wird immer erst nach dem Schleifendurchlauf ausgeführt, bei normalen Schleifen ist es also echt egal wie man das macht, weil sowieso keine weiteren Berechnungen dazwischenliegen.
Ich glaub ich habs!
Obwohl es stark nach noob code riecht ;D
Java:
public class AufgabeF {
public static void main(String[] args){
int b = 0;
for (int i = 0; i < args.length; ++i) {
int a = Integer.parseInt(args[i]);
int c = a+b;
b = c;
}
int d = b/args.length;
System.out.println("Mittelwert der Parameter ist " +d);
}
}
Vielen vielen Dank an Alle die mir mit Tipps geholfen haben ;D ;D ;D
die erste ist, du brauchst diese ganzen hilfsvariablen eig. nicht. du kannst auch einfach
b = b + Integer.parseInt(args);
schreiben. oder noch vereinfacht:
b += Integer.parseInt(args);
die zweite sache ist, dein mittel, kann doch auch durchaus keine ganzzahl sein (da du ein int benutzt -->wird also auf/abgerundet werden. --> mittel unkorrekt!)
Es gibt noch eine zweite Art der for-Schleife, die dir einfach alle Werte in einem Array oder einer Collection liefert. Wenn du keinen Schleifen-Index brauchst, ist das einfacher:
Java:
public class AufgabeF {
public static void main(String[] args){
int summe = 0;
for (String s : args) { //"für jeden String in args tue..."
summe += Integer.parseInt(s);
}
double d = 1.0*summe/args.length;
System.out.println("Mittelwert der Parameter ist " + d);
}
}
die erste ist, du brauchst diese ganzen hilfsvariablen eig. nicht. du kannst auch einfach
b = b + Integer.parseInt(args);
schreiben. oder noch vereinfacht:
b += Integer.parseInt(args);
die zweite sache ist, dein mittel, kann doch auch durchaus keine ganzzahl sein (da du ein int benutzt -->wird also auf/abgerundet werden. --> mittel unkorrekt!)
public class AufgabeF {
public static void main(String[] args){
int b = 0;
for (int i = 0; i < args.length; ++i) {
b = b + Integer.parseInt(args[i]);
}
double d = (double)b/args.length;
System.out.println("Mittelwert der Parameter ist " +d);
}
}
Danke euch allen nochmals und ich meld mich garantiert wieder beim nächsten Abenteuer lol