我尝试运行我的代码,每次我做水瓶座促进者时都会显示 0.000。它与 int 和双精度作为我的变量和导致我对 trunkaid 的答案的 int 有什么关系吗?感谢您的帮助
这是我的程序
public class JRambolus
{
public JRambolus(){}
public JRambolus(double A)
{
Lengtus = A;
}
public JRambolus(double A, int B)
{
Lengtus = A;
Actus = B;
}
//mutator
void SetLengtus( double A )
{
Lengtus = A;
}
//mutator
void SetActus(int A)
{
Actus = A;
}
//accessor
double GetLengtus()
{
return Lengtus;
}
//accessor
int GetActus()
{
return Actus;
}
//Facilitator
double Arius()
{
return 3*Lengtus+(1/2*Actus);
}
double Aquarius()
{
return 4/3*((1/2*Lengtus)+(2/5*Actus));
}
double Nebulus()
{
return (Math.pow(Lengtus,2)+Math.pow(Actus,3/2))*4/3;
}
//Memeber Varibales
private double Lengtus;
private int Actus;
}
这是我的呼叫程序
public class JShower
{
public static void main(String[] args)
{
JRambolus FullRambolus = new JRambolus();
//Calling out the the system
System.out.printf("%43s %4s %8.3f%n" ,"The Arius of FullRambolus is" ,"=", FullRambolus. Arius() );
System.out.printf("%46s %s %8.3f%n" ,"The Aquarius of FullRambolus is","=", FullRambolus.Aquarius() );
System.out.printf("%45s %2s %8.3f%n%n%n","The Lengtus of FullRambolus is" ,"=", FullRambolus.Nebulus () );
JRambolus DefaultRambolus = new JRambolus();
//Calling the Mutator From JRambolus
DefaultRambolus.SetLengtus(6);
DefaultRambolus.SetActus(3);
//Calling out to the system
System.out.printf("%46s %4s %8.3f%n","The Arius of DefaultRambolus is" ,"=", DefaultRambolus. Arius() );
System.out.printf("%49s %s %8.3f%n" ,"The Aquarius of DefaultRambolus is","=", DefaultRambolus.Aquarius() );
System.out.printf("%48s %2s %8.3f%n","The Nebulus of DefaultRambolus is" ,"=", DefaultRambolus.Nebulus () );
}
}
您将整数除法与双精度混合在一起,这可能会导致未执行的结果。
该声明应为
return 4d/3d*((1d/2d*Lengtus)+(2d/5d*Actus));
在原始语句中,4/3
是使用整数除法计算的,给出值 1
。 更关键的是,返回值为 0.0D
的 1/2
(结果:0)和2/5
(也为零)也是如此
你正在返回值。 看看这里,看看他们如何处理变量的打印/显示。