我正在寻找一种更好的方式来组织我的课程。 现在我的代码看起来像这样: mainMethod: -number1输入 -call method1 with number1 als value
方法1: -do“东西”与输入 -call method2,新的“stuff”作为值
方法2: -做东西 -call method3
等...
所以我从我的main方法中的用户输入开始,我的整个类像domino一样工作,需要调用第一个方法来运行下一个方法。 我宁愿让method1返回一个值并将其保存在我的类中的某个全局变量中,可以由method2使用,依此类推。 这是我的代码正是这个问题:(它计算sqrt)
package wurzel;
import java.util.Scanner;
import wurzel.Fraction;
public class wurzel {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("Eingabe:");
int in = s.nextInt();
s.close();
bisection(in);
}
private static int bisection(int N){
int counter = 0;
for(int i = 0; i < N;i++){
if((counter*counter) > N){
counter--;
break;
}
else if(counter*counter == N){
break;
}
else counter++;
}
calculateSequence(counter,N);
return counter;
}
static int[] calculateSequence(int vKomma, int look){
int m = 0;
int d = 1;
int a = vKomma;
int[] intarr = new int[4];
intarr[0] = vKomma;
for(int i = 1; i <= intarr.length; i++){
if(i == intarr.length )
break;
else{
m = (d*a) - m;
d = (look - (m*m)) / d;
a = (vKomma + m) / d;
intarr[i] = a;
}
}
calculateApproximation(intarr);
return intarr;
}
static double calculateApproximation(int[] sequence ){
Fraction result = new Fraction((sequence.length)-1);
for(int dcounter = sequence.length; dcounter > 0; dcounter--){
result = result.reciprocal().add(sequence[dcounter-1]);
}
System.out.println("Approximation als double: " +result.doubleValue());
System.out.println("Approximation als Bruch: " +result);
return result.doubleValue();
}
}
答案 0 :(得分:0)
您还应该将代码分成不同的类。例如。有一个通用的Math Helper类,里面有这些方法。
这有助于保持代码分离且易于阅读。
答案 1 :(得分:0)
您提到您希望将一些数据存储在整个类的全局变量中。这样做的方法是使类使用实例方法而不是类方法。使用类方法,您必须使用类变量。但是,当您使用实例方法时,您可以定义可以通过类中的任何方法访问的实例变量。
要执行此操作,请通过从每个方法中删除关键字static
来更改所有方法(除了main())。然后,定义该类的全局实例变量。例如如果你的全局变量的类型是int,那么它将是:
private int myInstanceVariable;
此实例变量或全局变量可由getter和setter访问。
答案 2 :(得分:0)
相互呼叫并形成长链调用是很常见的方法。 所以我不担心。实际上在现实世界中,在企业代码中, 你有几十个电话通话。所以我认为全局变量会 与你所做的相比,做法更糟糕。