在JAVA中改进调用next方法

时间:2013-11-28 10:08:44

标签: java

我正在寻找一种更好的方式来组织我的课程。 现在我的代码看起来像这样: 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();            
        }      
}

3 个答案:

答案 0 :(得分:0)

您还应该将代码分成不同的类。例如。有一个通用的Math Helper类,里面有这些方法。

这有助于保持代码分离且易于阅读。

答案 1 :(得分:0)

您提到您希望将一些数据存储在整个类的全局变量中。这样做的方法是使类使用实例方法而不是类方法。使用类方法,您必须使用类变量。但是,当您使用实例方法时,您可以定义可以通过类中的任何方法访问的实例变量。

要执行此操作,请通过从每个方法中删除关键字static来更改所有方法(除了main())。然后,定义该类的全局实例变量。例如如果你的全局变量的类型是int,那么它将是:

private int myInstanceVariable;

此实例变量或全局变量可由getter和setter访问。

答案 2 :(得分:0)

相互呼叫并形成长链调用是很常见的方法。 所以我不担心。实际上在现实世界中,在企业代码中, 你有几十个电话通话。所以我认为全局变量会 与你所做的相比,做法更糟糕。