下面的程序应该总结从n到0(负)或从0到n(正)的所有偶数。
我不应该使用其他方法或*; * =
问题是程序在zaehler(counter) == eingabe
之后没有停止(“eingabe表示英文输入”。我希望你能告诉我如何解决问题。
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);
}
}
答案 0 :(得分:1)
请注意,使用比您更少的代码的更简单的方法是使用单个sum
函数(而不是evenSum1
和evenSum2
),它会一直递归到{{1等于counter
或target
。然后,对于正数,将target - 1
初始化为counter
,将0
初始化为target
。对于负数,请将eingabe
初始化为counter
,将eingabe
初始化为target
。希望对你有意义!
如果您希望保留当前的方法,那么您的代码就会出现一些问题。我对它进行了更改,并在必须修复的地方添加了注释。
0