The program below should sum up all even numbers from n to 0 (negative) or from 0 to n (positive).
I should not use other methods or *; *=
The problem is that the program does not stop after zaehler(counter) == eingabe
("eingabe means "input" in English). I hope you can tell me how to solve the problem.
import javax.swing.JOptionPane;
public class Toolbox {
public static int eingabe(int eingabe){
if (eingabe < 0) {
evenSum1(eingabe, 0, 0);
} else {
evenSum2(eingabe, 0, 0);
}
return 0;
}
public static int evenSum2(int eingabe, int summe, int zaehler) {
if (PevenSum(eingabe, summe, zaehler) == 0) {
System.out.print("Die Summe aller geraden Zahlen ist: " + summe);
return 0;
}
zaehler = zaehler - 2;
summe = summe - zaehler;
evenSum2(eingabe, summe, zaehler);
return 1;
}
public static int evenSum1(int eingabe, int summe, int zaehler) {
if (NevenSum(eingabe, summe, zaehler) == 0){
System.out.print("Die Summe aller geraden Zahlen ist: " + summe);
return 0;
}
zaehler = zaehler + 2;
summe = summe + zaehler;
evenSum1(eingabe, summe, zaehler);
return 1;
}
public static int NevenSum(int eingabe, int summe, int zaehler) {
if (zaehler == eingabe || zaehler == eingabe + 1) {
return 0;
}
return 1;
}
public static int PevenSum(int eingabe, int summe, int zaheler) {
if (summe == eingabe || summe == eingabe - 1) {
return 0;
}
return 1;
}
public static void main(String[] args) {
String eingabe;
eingabe = JOptionPane.showInputDialog("Hier eine Zahl eingaben");
int zahl = Integer.parseInt(eingabe);
eingabe(zahl);
}
}
Note that a simpler approach with much less code than you have is to have a single sum
function (rather than having evenSum1
and evenSum2
), that keeps recursing until counter
is equal to target
or target - 1
. Then, for positive numbers initialize counter
to 0
and target
to eingabe
. For negative numbers initialize counter
to eingabe
and target
to 0
. Hope that makes sense to you!
If you prefer to keep your current approach, there were a few issues with your code. I made changes to it and added comments where things had to be fixed.
import javax.swing.JOptionPane;
public class TreeNode {
public static int eingabe(int eingabe) {
if (eingabe > 0) { // Needed to reverse this
evenSum1(eingabe, 0, 0);
} else {
evenSum2(eingabe, 0, 0);
}
return 0;
}
public static int evenSum2(int eingabe, int summe, int zaehler) {
if (PevenSum(eingabe, summe, zaehler) == 0) {
System.out.print("Die Summe aller geraden Zahlen ist: " + summe);
return 0;
}
zaehler = zaehler - 2;
summe = summe + zaehler; // Needed to change this to add rather than
// subtract (subtracting a negative number
// makes it positive)
evenSum2(eingabe, summe, zaehler);
return 1;
}
public static int evenSum1(int eingabe, int summe, int zaehler) {
if (NevenSum(eingabe, summe, zaehler) == 0) {
System.out.print("Die Summe aller geraden Zahlen ist: " + summe);
return 0;
}
zaehler = zaehler + 2;
summe = summe + zaehler;
evenSum1(eingabe, summe, zaehler);
return 1;
}
public static int NevenSum(int eingabe, int summe, int zaehler) {
if (zaehler == eingabe || zaehler == (eingabe - 1)) { // Changed from
// zaehler ==
// (eingabe + 1)
return 0;
}
return 1;
}
public static int PevenSum(int eingabe, int summe, int zaheler) {
if (zaheler == eingabe || zaheler == eingabe + 1) { // Can't compare the
// sum, have to
// compare counter
// and eingabe
return 0;
}
return 1;
}
public static void main(String[] args) {
String eingabe;
eingabe = JOptionPane.showInputDialog("Hier eine Zahl eingaben");
int zahl = Integer.parseInt(eingabe);
eingabe(zahl);
}
}