嘿,伙计们,我正在学习java,我写了这个简单的代码,我找不到任何错误。我找不到自行车了。感谢阅读
public class ConstructorEx3 {
int Speed;
int Distance;
int Minute;
public int getTime (){
return ((Distance/Speed)*Minute);
}
ConstructorEx3 (){
Distance = 60;
Speed = 30;
Minute = 60;
}
ConstructorEx3 (int D, int S, int M){
Distance = D;
Speed = S;
Minute = M;
}
public static void main (String []arsh){
ConstructorEx3 Bike1,Bike2;
Bike1 = new ConstructorEx3();
Bike2 = new ConstructorEx3(40,80,60);
System.out.println("Bike one is travelling at : "+ Bike1.getTime());
System.out.println("Bike two is travelling at : "+ Bike2.getTime());
}
}
因为它的整数运算(40/80)*60
会得到0
。请注意,在整数计算中40/80
将是0
而不是0.5
,您需要在程序中使用double
值而不是int
来获得确切的答案(对于您的特定情况)。
关于约定的一些建议,
- 为您的类选择有意义的名称,描述它的目的,如
TimeCalculator
,Bike
- 以小写字母
distance
而非Distance
开始变量名 - 同样,实例变量名也应该以小写字母
bike1
开头,而不是Bike1
- 最好在构造函数中使用
this.distance
而不是Distance = D
Distance = 40;
Speed = 80;
Minute - 60;
Distance / Speed = 0.5;
由于您正在使用int
,因此.5
是级联的。最后得到0 * Minute = 0 * 60 = 0;
最好的方法是将值转换为double
,然后再转换回来。请注意,当处理双精度到整型的转换时,它是有损的,因为你不会得到准确的结果。
看看我如何在getTime()
方法中解决您的问题:
public class ConstructorEx3 {
int Speed;
int Distance;
int Minute;
public int getTime (){
double v = ((double)Distance/(double)Speed);
v= v * (double)Minute;
return (int)v;
// return ((Distance/Speed)*Minute);
}
ConstructorEx3 (){
Distance = 60;
Speed = 30;
Minute = 60;
}
ConstructorEx3 (int D, int S, int M){
Distance = D;
Speed = S;
Minute = M;
}
public static void main (String []arsh){
ConstructorEx3 Bike1,Bike2;
Bike1 = new ConstructorEx3();
Bike2 = new ConstructorEx3(40,80,60);
System.out.println("Bike one is travelling at : "+ Bike1.getTime());
System.out.println("Bike two is travelling at : "+ Bike2.getTime());
}
}
输出:Bike one is travelling at : 120
Bike two is travelling at : 30