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.
Erste SchritteIch verstehe das Summenprogramm nicht
Hallo,
ich arbeite gerade ein Buch über Java Programmierung für Anfänger durch. Ich komme bei einem Programm das die Summe von n Zahlen addieren soll nicht weiter.
Der Programmcode lautet so,
Java:
public class summe4 {
public int berechneSumme(int n)
{
int i = 20;
int sum = 0;
for (i = 0; i <= n; ++i)
{
sum = sum + i;
}
return sum;
}
}
Im Buch kommt danach ein Textblock, darunter steht "Der Aufruf der Funktionen ist dann sehr einfach:"
Java:
int summe1 = berechneSumme(20);
Meine erste Frage, muss der oben geschriebene Befehl unter die for Schleife, also da hin ?
Java:
public class summe4 {
public int berechneSumme(int n)
{
int summe1 = berechneSumme(20)
int i = 20;
int sum = 0;
for (i = 0; i <= n; ++i)
{
sum = sum + i;
}
return sum;
}
}
Warum wird hier auf einmal die Variable summe1 verwendet, diese kommt in dem restlichen Code gar nicht vor. Das Programm funktioniert so auch gar nicht.
Wie kann ich für n verschiedenen integer angeben ?
Leg eine main-Methode an und rufe von dort die Methode auf.
In der Methode selbst die Methode aufzurufen ist schwachsinnig, da es zu einer Endlosrukursion kommt.
Hallo Robat,
danke für deine Antwort.
Das mit diesen zwei Dateien (Methoden) habe ich schon in der Vorlesung nicht verstanden. Wieso macht man das ?
Ich habe jetzt eine summe4test Main-Methode erstellt, mit folgendem Inhalt.
Java:
public class summe4test {
public static void main(String[] args)
{
int summe1 = berechneSumme(20);
}
Wenn ich diese Datei ausführen erhalte ich eine Fehlermeldung, The method berechneSumme(int) is undefined for the type summe4test.
Gruß Kai
Tante Edit:
Ich habe es nochmal so versucht,
Java:
public class summe4 {
public int berechneSumme(int n)
{
int sum = 0;
for (int i = 0; i <= n; ++i)
{
sum = sum + i;
}
return sum;
}
public static void main(String[] args)
{
int summe1 = berechneSumme(20);
int summe2 = berechneSumme(30);
}
}
klappt aber leider auch nicht,
Cannot make a static reference to the non-static method berechneSumme(int) from the type summe4
Cannot make a static reference to the non-static method berechneSumme(int) from the type summe4
Ich glaube ich bin einfach zu blöd für dieses Java
Wenn ich die Methode zu static ändere, bekomme ich vom compiler die Nachricht "Return type for the methode is missing"
Java:
public class summe4 {
public static berechneSumme(int n)
{
int sum = 0;
for (int i = 0; i <= n; ++i)
{
sum = sum + i;
}
return sum;
}
public static void main(String[] args)
{
int summe1 = berechneSumme(20);
int summe2 = berechneSumme(30);
}
}
Java:
public class summe4 {
public int berechneSumme(int n)
{
int sum = 0;
for (int i = 0; i <= n; ++i)
{
sum = sum + i;
}
return sum;
}
public int void main(String[] args)
{
int summe1 = berechneSumme(20);
int summe2 = berechneSumme(30);
}
}
Wenn ich in der main-methode static durch int ersetze, kommt die Nachricht "Syntax error on token "void", delet this token"
Naja, dir wird doch genau gesagt was fehlt.
Die Methode ist nun static, aber der Rückgabetyp fehlt nun. Da du einen int-Wert zurückgeben willst (siehe return!) müsste die Methode lauten:
Code:
public static int berechneSumme(int n) {
...
}
Die main bleibt wie gewöhnlich erhalten:
Code:
public static void main(String[] args) {
...
}
Jetzt sollte alles ausgeführt werden, wie du es dir denkst.
Jedoch solltest du summe1 z.B. noch mit System.out.println(summe1); anzeigen lassen.
Wenn du dazu noch weitere Fragen hast - einfach Rückmeldung geben was du noch nicht verstehst.
Wenn man noch nie mit Programmiersprachen zu tun hatte ist der Anfang sehr schwer - das musste ich nun selbst im ersten Semester erfahren. Bleib am Ball
Ja der Anfang war sehr schwer. Hatte auch ziemlich viele Probleme. Aber irgendwann (bei mir hats lang gedauert ^^) hats klick gemacht. Und nun macht es echt spaß.
Dranbleiben!
Die main-Methode muss immer so aussehen wie FourOhFour es auch geschrieben hat. Die ist dafür verantwortlich das das Programm gestartet werden kann. Von dort geht also alles los wenn du die Datei kompilierst und ausführst.
Gewöhn dir gleich an, die Klassennamen groß zu schreiben. Und den Code ordentlich zu formatieren, damit du nicht den ÜBerblick verlierst.
Mach also hier weiter
Code:
public class Summe4 {
public static void main(String[] args){
int summe1 = berechneSumme(20);
}
public static berechneSumme(int n){
int sum = 0;
for (int i = 0; i <= n; ++i){
sum = sum + i;
}
return sum;
}
}
Änder die "berechne Summe" Methode so wie FourOhFour es geschrieben hat.
Eigentlich sagt die Meldung doch alles aus!
Du versuchst einen Wert zurückzugeben ("return sum").
Dann musst Du der Methode in der Signatur auch sagen, von welchem Typ die Rückgabe ist!
Guten Morgen,
Danke FourOhFour,MiMij und Vfl-Freak, das ihr nicht aufgegeben habt.
So klappt es jetzt.
Java:
public class summe4 {
public static int berechneSumme(int n)
{
int sum = 0;
for (int i = 0; i <= n; ++i)
{
sum = sum + i;
}
return sum;
}
public static void main(String[] args)
{
int summe1 = berechneSumme(10);
int summe2 = berechneSumme(20);
System.out.println(summe1);
System.out.println(summe2);
}
}
Ich habe mich einfach über dieses Buch geärgert, vorher sind alle Beispiel ausführlich beschrieben worden und immer in der main-methode programmiert worden. Es ging auch um die Summe von Zahlen. Bei den Beispielen vorher sind diese aber vorher festgelegt worden.
Im Moment denke ich vorher wurde nicht Objektorientiert programmiert. Das ist echt schwer da den Überblick zu behalten zwischen Klassen, Methoden und main-Methoden. Ich werde mich als erste darum kümmern dort den Überblick zu erhalten.