Java 为什么即使我的条件是错误的,我的方法仍在重复?

Java 为什么即使我的条件是错误的,我的方法仍在重复?,java,methods,repeat,Java,Methods,Repeat,我称为method的方法将在应该停止时重复茶匙部分两次,因为它等于零。X等于49,应该等于1杯1茶匙,但我得到1杯1茶匙1茶匙。我不明白为什么当x等于零时它重复了两次。请帮忙,我只是在学Java import java.lang.Math; public class Third{ double teaspoon = 1; double tablespoon = 3; double cup = 48; double

我称为method的方法将在应该停止时重复茶匙部分两次,因为它等于零。X等于49,应该等于1杯1茶匙,但我得到1杯1茶匙1茶匙。我不明白为什么当x等于零时它重复了两次。请帮忙,我只是在学Java

 import java.lang.Math;


    public class Third{


        double teaspoon = 1;
        double tablespoon = 3;
        double cup = 48;
        double quarter = 12;
        double third = 16;
        double half = 24;


    public void Method(double x){

        double[] measurement = new double[6];
            measurement[0] = 0;
            measurement[1] = 0;
            measurement[2] = 0;
            measurement[3] = 0;
            measurement[4] = 0;
            measurement[5] = 0;


    while(x>0){
        if(x>= cup){
            measurement[5] = Math.floor(x/cup);
            System.out.println(measurement[5] + "CUPS");
            x = x-(cup*measurement[5]);
            System.out.println(x +"@ cups");
            Method(x);
        }
        else if(x>= half){
            if (x%16==0) {
                measurement[3] = Math.floor(x/third);
                System.out.println(measurement[3] + "Third");
                x = x-(third*measurement[3]);
                System.out.println(x+"@ third");
                Method(x);
            }
            else if(x%12==0){
                measurement[2] = Math.floor(x/quarter);
                System.out.println(measurement[2] + "/4 QUARTER");
                x = x-(quarter*measurement[2]);
                System.out.println(x+"@quarter");
                Method(x);
            }
            else{
                measurement[4] = Math.floor(x/half);
                System.out.println(measurement[4] + "/2 HALF");
                x = x-(half*measurement[4]);
                System.out.println(x+ "@half");
                Method(x);
            }
        }
        else if(x>= third){
            if(x%12==0){
                measurement[2] = Math.floor(x/quarter);
                System.out.println(measurement[2] + "/4 QUARTER");
                x = x-(quarter*measurement[2]);
                System.out.println(x+"@quarter");
                Method(x);
            }
            else{
                measurement[3] = Math.floor(x/third);
                System.out.println(measurement[3] + "/3 Third");
                x = x-(third*measurement[3]);
                System.out.println(x+"@ third");
                Method(x);
            }
        }
        else if(x>= quarter){
            measurement[2] = Math.floor(x/quarter);
            System.out.println(measurement[2] + "/4 QUARTER");
            x = x-(quarter*measurement[2]);
                System.out.println(x+"@quarter");
                Method(x);
        }
        else if(x>= tablespoon){
        measurement[1] = Math.floor(x/tablespoon);
            System.out.println(measurement[1] + "Tablespoon");
            x = x-(tablespoon*measurement[1]);
            System.out.println(x+"@TABLE");
            Method(x);
        }
        else if(x== teaspoon){
            System.out.println(x+ "Teaspoon");
            x  = x-1;
        }
        else if(x>= teaspoon){
            if(x==1){
                System.out.println(x);
                x = 0;
            }
            else{
            measurement[0] = Math.floor(x/teaspoon);
            System.out.println(measurement[0] + "TEAS..");
            x = x-(teaspoon*measurement[0]);
            }

            }

        else{
            measurement[0] =(x/teaspoon);
            System.out.println(measurement[0] + "TEAS");
            x = x-(teaspoon*measurement[0]);
            System.out.println(x+"@ TEEEEE");
            x= 0;

        }
        }


    }
    }

发生这种情况是因为您既可以循环(
while(x>0){
)又可以递归(
Method(x);

如果删除所有的
方法(x);
调用并离开循环,它的行为将更符合您的预期