java为什么我的代码打印出0.00而不是45.000
//Single parameter
public Time(double input){
number= 20.75;
double temp ;
temp= (number%1*60*100)/100; // Prints out 0.00 why?
minutes= (int)temp;
hours= (int)number-(int)number%1;
}
我的代码运行得非常好,但我有点困惑,为什么它会为temp
变量打印出0.00
,而不是45.0000
我认为它是如何工作的:number
=20.75,因此20.75万%1=0.75万*60*100/100=45.0000,因此temp
=45.00000
以下是完整代码:
public class TimetestProgram {
public static void main(String[]args){
Time object = new Time(20,329);
Time gamma= new Time(20.75);
System.out.println(object);
System.out.println(gamma);
System.out.println("temp:"+gamma.temp);
System.out.println("minutes:"+gamma.minutes);
System.out.println("number:"+gamma.number%1);
}
}
// Double parameter
class Time {
int hours,minutes;
double number,temp;
public Time(int x,int y){
hours= x;
minutes=y;
hours+=minutes/60;
minutes%= 60;
}
//Single parameter
public Time(double input){
number= input;
double temp ;
temp= (number%1*60*100)/100;
minutes= (int)temp;
hours= (int)number-(int)number%1;
}
public String toString(){
return String.format(hours+":"+minutes);
}
}
# 1 楼答案
这将对你有用:
从时间构造函数中删除临时变量声明,这就是为什么每次都得到0.00
# 2 楼答案
您有一个实例变量:
以及构造函数中的局部变量
您应该只有一个实例变量,而且它必须是实例变量,因为您要在main中调用
gamma.temp
,请删除构造函数中的下面一行此外,我建议您使用封装(见下文)来访问类外的变量
解决方案
有用的链接