我的方法叫做方法会重复我的茶匙部分两次,因为它等于零。 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;
}
}
}
}
答案 0 :(得分:1)
这是因为你们都循环(while(x>0){
)并递归(Method(x);
)。
如果您删除所有Method(x);
个来电并离开循环,那么它的行为会更像您期望的那样。