Summenrückgabewert

Status
Nicht offen für weitere Antworten.

coffeecup

Aktives Mitglied
Hallo!

habe heute versucht, ein programm zu schreiben welches eine summe() mit beliebig vielen Zahlen in einer Methode berechnet.Das ist mir seltsamerweiße geglückt, nun funktioniert zwar das Programm, aber ich kann mir nicht erklähren warum.
Das hier ist mein Programm (nicht wircklich aufregend):
Code:
public class Summenrückgabewert 
{
	public static void main(String[] args) 
	{

		int a = summe();
		System.out.print("die Lösung ist:" + a);
	}

	private static int summe(int...b) 
	{
		int summe = 0;
		for (int i = 0; i < b.length;i++) 
		{
			summe += b[i];
		}
		return summe;
		}

}

Mir ist nicht klar warum ich mit "int summe =0;"anfangen muss und
die komplette Zeile for (int i = 0; i < b.length; i++) mehr als nur Fragen auf!

Vieleicht stehe ich derzeit nur auf der Leitung;-)

Hoffe das mir jemand diese beiden Zeilen für mein Verständnis erklähren kann,
es ist zwar schön, dass das Programm funktioniert, aber noch vielviel schöner ist es,
wenn ich verstehe warum!


Dankeschön schon im Voraus!!
 

Schandro

Top Contributor
Wenn du als parameter schreibst:
int ... b
dann bedeutet das, der benutzer der Methode kann beliebig viele ints hintereinander als Parameter schreiben. Innerhalb der Methode wird "b" aber als EIN Int-ARRAY behandelt! Deswegen die Schleife, die das Array durchläuft
 

coffeecup

Aktives Mitglied
Ok, danke!, das schafft schon mal klarheit, aber warum muss ich dann in der Schleife noch extra b.length;i++
ausführen lassen?
 
G

Gast

Gast
Also ich versteh noch net so ganz dein Problem ;-)
b.length gibt dir einfach nur die Länge des Arrays b zurück und deine For-Schleife zählt dann von 0 bis <= die Länge deines übergebenen Arrays. i++ erhöht einfach die Zählvariable i um 1.

Gruß
Matze
 
G

Guest

Gast
Ganz einfach, weil du damit auf das i - te Element des Arrays zugreifst.

Code:
   private static int summe(int...b){
      int summe = 0;
      for (int i = 0; i < b.length;i++){
         summe = summe + b[i];
      }
      return summe;
      }

}
i ist dabei nur eine Variable, die hochgezählt wird. Von 0 bis Länge des Arrays. Dadurch kannst du auf JEDES Element des Arrays mit b zugreifen.

Ab Java 5 geht auch das (Für PHP Leute vielleicht eher verständlich);
Code:
   private static int summe(int...b){
      int summe = 0;
      for (int zahl : b){
         summe = summe + zahl;
      }
      return summe;
      }

}

Hier sparst du dir das i weil die for Schleife automatisch bei jedem Durchlauf das jeweils nächste Element im Array auswählt.
 

coffeecup

Aktives Mitglied
Alles klar, das war jetzt einleuchtend, manchmal steh ich echt total auf der Leitung :roll:

Dankeschön für die schnellen Antworten, haben mir sehr geholfen!
Es wurmt mich immer, wenn ich nicht ganz durchblicke!

Dankeschön! :toll:
 

Tobias

Top Contributor
Code:
summe = 0;

Diese Zeile muss sein, weil du die Variable "summe" im Folgenden als Operand benutzt. Wenn die Variable nicht auf einen gültigen Startwert gesetzt -- d. h. initialisiert -- würde (und der Compiler das akzeptieren würde), so müßte an dieser Stelle mit dem zufälligen Wert gerechnet werden, der zum Ausführungszeitpunkt gerade an der entsprechenden Stelle des Speichers stünde. Nicht auszudenken, was dann als Ergebnis rauskäme.

mpG
Tobias

P.S.: Der Compiler macht das nicht automatisch, weil er nicht wissen kann, was ein gültiger Startwert ist - würdest du etwa statt der Summe das Produkt ausrechnen wollen, wäre 0 als Startwert nicht ok. Ein Ausnahme sind die Instanzvariablen: Die initialisiert der Compiler automatisch mit einem Nullwert.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Summenrückgabewert Java Basics - Anfänger-Themen 4

Ähnliche Java Themen


Oben